2016-03-08 17 views
7

我使用CodeIgniter 3作为Web平台,并试图将语义UI CSS导入到我的页面中。我这样做是通过在CSS导入的href属性中使用CodeIgniter的base_url()方法。Codeigniter呼应[:: 1]而不是本地主机

但是,semantic.css本身会导入一些其他字体,这些字体因为跨源资源共享策略而无法加载。这是chrome给出的错误消息:

来自原始'http://[::1]'的字体已被阻止被跨源资源共享策略加载:请求的资源上没有'Access-Control-Allow-Origin'标头。因此不允许访问原产地'http://localhost'。

这是因为base_url()回声域是[::1]而不是我输入到浏览器中的localhost。

出于某种原因,在我看来,铬(也是边缘)不认为[::1]和localhost作为同一主机,或者我只是愚蠢。我所知道的是,如果我将主semantic.css文件和硬代码localhost的路径更改为它,它可以工作,而且它也可以工作,而不是使用本地主机请求我的页面,我使用[::1]

I已经完成了与此非常相似的其他项目,并且从未出现过这个"[::1]"。究竟是什么导致PHP回声这样的路径?

回答

21

因为你的base_url是空的。

配置/ config.php中

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

嗯,我意识到这一点,但我从来没有填写它,并且base_url总是正确解决,无论它是在本地主机还是其他域。 如果我填写了这个值,我想我需要改变它,当我的项目从我的机器移动到其他服务器的权利? – Dalannar

+0

其他一些服务器意味着? –

+0

如果我搬到了说example.com,base_url仍然回声localhost我设置? – Dalannar

3

为了使用BASE_URL();您必须先加载URL Helper。这是可以做到无论是在应用程序/配置/ autoload.php(或前后67行),也可以使用手动

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

不是设置

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

我认为这将帮助你

3

更准确,动态的方式

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

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

1

这是你需要在配置/ config.php文件来改变什么,它工作正常在“本地主机”,以及在“服务器”:

$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'; 

} 
3

你需要编辑你$配置[ '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']); 

文件位置:笨/应用/配置/ config.php文件
使用以上代码获取动态url。

相关问题