gpt4 book ai didi

php - codeigniter base_url 仅适用于 Firefox

转载 作者:行者123 更新时间:2023-12-04 05:37:43 24 4
gpt4 key购买 nike

当我将 base_url 设置为 http://example.com/ 时, Ajax 在所有浏览器中都能正常工作,除了 Firefox。

当我将其设置为 http://www.example.com/ 时它有效 只有在 Firefox 中,并在其他浏览器中停止工作。
它会导致 Access-Control-Allow-Origin 错误(它阻止了对不同域的 ajax 调用。它认为域是不同的,因为 www )

有没有人遇到过这个问题?
提前感谢您的时间!

$config['base_url'] = "http://example.com/";  // this works in all browsers, not in Firefox
$config['index_page'] = 'index.php';

$config['base_url'] = "http://www.example.com/"; // this works in only in Firefox, but not in other browsers
$config['index_page'] = 'index.php';

错误是“XMLHttpRequest 无法加载 http://www.example.com/index.php/controller/function。Access-Control-Allow-Origin 不允许访问 http://example.com。”

这两个链接仅在“www”中有所不同。

最佳答案

您实际上正在做的是从 Firfox 获取您的网站“www.example.com”和其他浏览器“example.com”

只有在没有违反 CORS(跨源请求共享)的情况下,Ajax 才能正常工作。这意味着如果您在 www.example.com 上,则无法向 example.com 发起 ajax 请求
其实 www.example.com example.com 就浏览器和搜索引擎而言,是完全不同的域。您实际上可以在每个域上托管两个完全不同的网站。
您应该在这两个域中选择一个并将所有请求重定向到另一个域。
从 www 重定向到非 www

if (substr($_SERVER['HTTP_HOST'], 0, 4) === 'www.') {
header('Location: http'.(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on' ? 's':'').'://' . substr($_SERVER['HTTP_HOST'], 4).$_SERVER['REQUEST_URI']);
exit;
}

要做相反的事情,只需在上面的 if 条件中将 === 更改为 != 即可。

但是,如果出于任何原因,您必须保留这两个域,那么您应该在当前域中调用您的 ajax 脚本。

然后,您的 base_url() 函数应返回当前域。例如:
function base_url(){
return 'http'.
(isset($_SERVER['HTTPS'])?'s':'').'://'.$_SERVER['SERVER_NAME'];
}

关于php - codeigniter base_url 仅适用于 Firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11707614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com