2016-03-08 13 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。

相關問題