2012-11-16 13 views
76

他のサイトに外部から読み込むスクリプトを作成しています。それはCSSとHTMLをロードし、自分のサーバー上で正常に動作します。htaccess Access-Control-Allow-Origin

しかし、私は別のウェブサイト上でそれをしようとすると、それはこのひどいエラーが表示されます。あなたはそれが完全にロードさ見ることができます

ここ
Access-Control-Allow-Origin 

http://tzook.info/bot/

しかし、この他のウェブサイト上で、それがエラーを示しています http://jsfiddle.net/TL5LK/

http://cantloseweight.co/robot/私はjsfiddleするロード・スクリプトをアップロード

私はこのようなのhtaccessファイルで編集しようとした:

<IfModule mod_headers.c>  
    Header set Access-Control-Allow-Origin * 
</IfModule> 

またはこのような:

Header set Access-Control-Allow-Origin * 

をしかし、それはまだ動作しません。

答えて

154

外部ルートフォルダの.htaccessファイルでこれを試してみてください:

<IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin "*" 
</IfModule> 

そして、それだけで懸念の.jsスクリプト場合は、この内部に上記のコードラップする必要があります。私の経験から

<FilesMatch "\.(js)$"> 
... 
</FilesMatch> 
+1

偉大なアドバイスを。 – Nate

+1

ファイルマッチブロックを追加してファイルをマッチさせると、 '*'は何をしますか? – shenkwen

+0

これを実行した後にサーバーを再起動する必要はありますか?上記のコードを適用しても、\ .jsonにアクセスすることはできません。 'js'を' json'に変更しました。 – shenkwen

20

を;

それはphp.htaccessでこれを行うに動作しない場合には、

<IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin http://www.vknyvz.com 
    Header set Access-Control-Allow-Credentials true 
</IfModule> 
  • 資格情報が
+1

これは唯一の問題です。どうもありがとう!!! – barbushin

+0

これは私のためには機能しませんでしたが、私は同じ原理でPHPで動作させることができました。 – RevNoah

+1

うまく働いた、ありがとう! – Gavin

27

のparamsあなたのAjaxリクエスト誰に応じて、trueまたはfalseです私のために働きましたmod_headersを有効にする必要があると言います。まだ動作しない場合は、次を試してください:

(次のヒントは、Ubuntuの上で動作し、他のディストリビューションについては知りません)

あなたがの

a2enmod headers 

を使用することができてmod_headersを有効にする

apache2ctl -M 

にロードされたモジュールのリストを確認することができますもちろん、Apacheの変更後に再起動する必要があります。

/etc/init.d/apache2 restart 

次に使用できます

<IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin "*" 
</IfModule> 

mod_headersがアクティブでない場合、この行はまったく何も行いません。 if節をスキップして、設定にHeader set Access-Control-Allow-Origin "*"を追加すると、mod_headersがアクティブでない場合、起動時にエラーがスローされます。

+2

は、私がGoogleで見つけられるすべてのオプションを試していました。あなたが言ったように、誰もmod_headersについて何も言わなかったのです。感謝! – Sirkong

+0

アーチまたは手動でダウンロードしたapacheで 'httpd -M'を使用します – SparK

+1

mod_headersがアクティブで、この行を.htaccess(同じ場所)に追加しましたが、まだこのエラーが表示されています。 Plsがお勧めします! –

6

Zend Framework 2.0にこの問題がありました。

RewriteEngine On 

<IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin "*" 
</IfModule> 

RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

、それは

+0

これは私の一日を保存したので、htaccessはそれを行いました。 – Relm

6

.htaccessファイルを追加作業を開始:ので、私からの.htaccessを修正私は.htaccessを好む双方向の.htaccessやPHPヘッダーで解くことができますフォントにアクセスする際に問題がある場合は、フォントフォルダに次のディレクティブを付けてください。 .cssまたは.jsファイルで簡単に変更できます。

<FilesMatch "\.(eot|ttf|otf|woff)"> 
    Header set Access-Control-Allow-Origin "*" 
</FilesMatch> 
+0

私のために働いた。 ./lib/.htaccessを編集しました。 –

+1

上記のディレクティブは不要です。上で示唆したように、あなたの '.htaccess'ファイルはあなたのフォントディレクトリにあります_and_あなたのフォントディレクトリ_only_には' .eot'、.'ttf'、 'が含まれています。 otf'や '.woff'ファイルのいずれかです。 – Mesagoma

2

BTW:.htaccessの設定は、クライアントではなくAPIをホストするサーバーで行う必要があります。たとえば、x.comドメイン上にAngularJSアプリケーションを作成し、y.com上にRest APIを作成する場合は、y.comのルートフォルダの.htaccessファイルにAccess Control-Allow-Origin "*"を設定する必要がありますまた.COM :)

<IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin "*" 
</IfModule> 

ルーカスは、あなたがしてmod_headersを有効にしているあなたは、Apache

6

を使用する場合、他の答えは私のために動作しませんでした、これはapache2のためにトリックをやってしまった何かであることを確認して述べたように:

1)有効ヘッダMOD:

sudo a2enmod headers

2)/etc/apache2/mods-enabled/headers.confファイルを作成し、挿入します

<IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin "*" 
</IfModule> 

3)サーバーを再起動します。

sudo service apache2 restart

+0

これは私のUbuntu 16.10サーバーでうまくいった唯一の解決策です。 – kneeki

+0

ありがとう、これは私のために働いた! –

+0

これも私のために働いた。私はUbuntu 16.04サーバーを使用しています。ありがとうございました。 – jhedm

0

はあなたが起こってリダイレクトを持っていないことを確認してください。これは、URLに末尾のスラッシュを含めない場合に発生します。

は、詳細についてはこの回答を参照してください - `FilesMatch`を使用して上のhttps://stackoverflow.com/a/27872891/614524