2016-03-08 8 views
7

私はCodeIgniter 3をWebプラットフォームとして使用しており、セマンティックUIのCSSをページにインポートしようとしています。 CSSインポートのhrefプロパティでCodeIgniterのbase_url()メソッドを使用しています。codeigniterはlocalhostの代わりに[:: 1]をエコーする

しかし、semantic.css自体は、私のサーバー上に存在する他のフォントをインポートし、クロスソースのリソース共有ポリシーのために読み込めません。これはクロムが私に与えるエラーメッセージです:

Cross-Origin Resource Sharingポリシーでロードされている「http://[::1]」のフォントは、要求されたリソースに存在しません。「Access-Control-Allow-Origin」ヘッダーは存在しません。 Origin 'http://localhost'はアクセスできません。

これは、ブラウザに入力したときにbase_url()がドメインが[::1]であり、localhostではないことを示しているからです。

何らかの理由で、クロム(とEdge)が同じホストとして[::1]とlocalhostを考慮しない、または多分私がばかだと思うかもしれません。私が知っているのは、メインのsemantic.cssファイルのパスを変更してlocalhostをハードコードすると動作し、localhostを使用してページを要求するのではなく、私が使用するのであれば動作します。[::1]

Iこれに非常によく似た他のプロジェクトをやったことがありましたが、これはなかった"[::1]"が表示されます。何が正確にそのようなパスをエコーするPHPを引き起こしている?

答えて

21

あなたのbase_urlが空です。 設定BASE_URLを使用するために/ config.phpの

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

これを実現しましたが、それを埋めたことはありませんでした.base_urlは、localhostや他のドメインにあっても常に正しく解決されています。 この値を入力した場合、プロジェクトを自分のマシンから別のサーバーに移動するときに変更する必要があると思いますか? – Dalannar

+0

いくつかの他のサーバー手段? –

+0

私がexample.comに移動した場合、それを設定してもbase_urlはlocalhostをエコーし​​ますか? – Dalannar

3

()において

。最初にURLヘルパーを読み込ませる必要があります。私はそれはあなた

助けになると思い

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

を設定するよりも、または手動で

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

を使用することができます。これは、アプリケーション/設定/ autoload.php中(上またはライン67の周り)のいずれかで行うことができます

3

あなたはまだポートを使用することができますが、より正確かつ動的な方法

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

1

これは、それは「localhost」をしてだけでなく、あなたの「サーバ」で正常に動作し、あなたが設定/ 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

あなたはあなたを編集する必要が$ 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']); 

ファイルの場所:CodeIgniterの/アプリケーション/設定/ config.phpの
使用動的URLを取得するコードです。

関連する問題