Codeigniter回显[::1]而不是本地主机

0tdrvxhp  于 2022-12-07  发布在  其他
关注(0)|答案(5)|浏览(143)

我正在使用CodeIgniter 3作为Web平台,并尝试将语义UI CSS导入到我的页面中。我是通过在CSS导入的href属性中使用CodeIgniter的base_url()方法来实现的。
然而,semantic.css本身导入了我的服务器上的一些其他字体,由于Cross-Origin资源共享策略,这些字体无法加载。
Cross-Origin资源共享策略已阻止加载原始字体'http://[::1]':请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问源“http://localhost”。
这是因为base_url()返回的域是[::1],而不是我在浏览器中输入的localhost。
出于某种原因,在我看来chrome(还有Edge)似乎并不认为[::1]和localhost是同一个主机,或者我只是在装傻。但我知道的是,如果我将主semantic.css文件的路径和复杂代码localhost更改到该文件中,它就可以工作,如果我不使用localhost请求页面,而是使用[::1],它也可以工作
我做过其他类似的项目,但从来没有出现过"[::1]"。究竟是什么导致PHP回显这样的路径?

i34xakig

i34xakig1#

因为你的base_url是空的。
配置文件/配置文件.php

$config['base_url'] = 'http://localhost/project_name';

关于http://\[::1\]/更有趣的事情

czfnxgou

czfnxgou2#

您需要编辑**$config ['base_url']**,如下所示:

$config['base_url'] = '';
$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$config['base_url'] .= "://" . $_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']), "", $_SERVER['SCRIPT_NAME']);
  • 档案位置:应用程序/配置/配置.php*

使用以上代码获取动态url。

vxbzzdmp

vxbzzdmp3#

更准确、更动态的方式

$root = "http://".$_SERVER['HTTP_HOST'];
$root .= dirname($_SERVER['SCRIPT_NAME']);
$config['base_url'] = $root;

虽然你仍然可以使用端口。

gr8qqesn

gr8qqesn4#

为了使用base_url();你必须先加载URL助手。2这可以在application/config/autoload. php中完成(在第67行或附近):也可以手动使用

$this->load->helper('url');

设置

$config['base_url'] = 'http://localhost/your_site_url';

我想这会对你有帮助

tzcvj98z

tzcvj98z5#

这就是你需要在config/config.php中修改的地方,它在“localhost”和你的“服务器”中都能正常工作:

$config['base_url'] = "http://".$_SERVER['SERVER_NAME'];

$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);

if(!defined('DOCUMENT_ROOT')) define('DOCUMENT_ROOT',str_replace('application/config','',substr(__FILE__, 0, strrpos(__FILE__, '/'))));

$config['base_path'] = constant("DOCUMENT_ROOT");

$config['js_url'] = $config['base_url'].'js/';

$config['css_url'] = $config['base_url'].'css/';

$config['image_url'] = $config['base_url'].'img/';

// Host resolution for cross origin requests

if(ENVIRONMENT == 'production') {
    $config['host'] = 'www.<domain_name>.com';
} else {

$config['host'] = 'localhost';

}

相关问题