2016-02-03 7 views
5

静的ファイル(CSS、画像、フォント、JSなど)の配信に使用するフォルダを作成しました。CDNでの使用のために、フォルダを最終的にサブドメインにCNAMEしてMagento 2の設定を行います。NGINXのすべてのドメインにCORS(クロスオリジンポリシー)を追加するにはどうすればよいですか?

CORS - Cross Origin Policy経由ですべてのドメインにすべてのアクセスを許可したいので、データもキャッシュします。これは私が持っているものです。 (私はJSONP問題に関するセキュリティの提案やヒントを求めていないです - 私は、ファイルのディレクトリへのグローバルアクセスを望んでください)

location /cdn-directory/ { 

    location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2|zip|gz|gzip|bz2|csv|xml)$ { 
     add_header Cache-Control "public"; 
     add_header X-Frame-Options "ALLOW-FROM *"; 
     expires +1y; 
    } 

} 

documentationによれば、X-Frame-OptionsALLOW-FROM uriをサポートしていますが、*(すべてのドメイン)を使用しての例を見ることができないと言いますこのALLOW-FROMに複数のドメインを追加することができます。すべてのドメインに静的ファイルフォルダへのアクセスを許可する必要があります。

+0

nfigurationは正しいですし、定義された(私がテストした)リクエストにヘッダを追加します。私はあなたがここで何を求めているのか分かりません:どのようにnginxでレスポンスヘッダをグローバルに定義するのですか? X-Frame-Optionsの使い方は? Google ChromeとSafariはX-Frame-Optionsの 'ALLOW FROM'をサポートしていないことを覚えておいてください。そのためにあまり例がないかもしれません。 – chrki

+0

' Content-Security-Policy:frame-ancestors *私はCSPヘッダーがX-Frame-Optionsに取って代わり、良い補完をするかもしれないと信じています。 –

+0

複数のドメインでコンテンツを使用できるかどうかを知りたい場合は、ALLOW-FROM uriは1回の呼び出しに限定されています – TheBlackBenzKid

答えて

3
location /cdn-directory/ { 

location ~* \.(js|css|swf|eot|ttf|otf|woff|woff2)$ { 
    add_header 'Cache-Control' 'public'; 
    add_header 'X-Frame-Options' 'ALLOW-FROM *'; 
    add_header 'Access-Control-Allow-Origin' '*'; 
    add_header 'Access-Control-Allow-Credentials' 'true'; 
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; 
    add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; 
    expires +1y; 
    } 
} 

http://enable-cors.org/server_nginx.html

3

私は、私はnginxのそれを試してみたが、現在の要求の発信元を許可するとのtomcatで動作しませんでした:

add_header X-Frame-Options "ALLOW-FROM $http_origin"; 
+1

このスニペットは、特にOPの残りの設定とともに** CACHE毒**。 'Origin'ヘッダーがなくても、存在していても' ALLOW-FROM'はアドレススキームを含んではいけません(例えば、 'http://'のようなものから始めることは決してありません)。 – cnst

+0

私はあなたに与えられた賞金を望んでいませんでした。どうすれば削除できますか? – TheBlackBenzKid

4

は、すべてのドメインが(例えば、iframeら以内)のリソースを埋め込むために許可デフォルトは余分なヘッダを必要としない。

X-Frame-Options HTTP応答ヘッダーの唯一の目的は、あなたの意図が実際に有効なディレクティブであるために仮定されていないALLOW-FROM *(であるかのように、このように、外部サイトでiframeに埋め込まれているからインタラクティブなリソースを防ぐためですこのようなヘッダ全体を完全に省略するだけで、誰でもあなたが好きなように任意のドメインの静的リソースに完全かつ適切にアクセスできるようになります。

location /cdn-directory/ { 

    location ~* \.(js|css|swf|eot|ttf|otf|woff|woff2)$ { 
     add_header Cache-Control "public"; 
     add_header Access-Control-Allow-Origin: * 
     expires +1y; 
    } 

} 
3

あなたが実際にCORS(クロスオリジンが共有要求)だけではなくiframe内に埋め込むことをしたいと仮定すると、設定は次のようになりCORentのMagento 1.8.xインストールで次のヘッダーを使用しました。

add_header 'Access-Control-Allow-Origin' "*"; 
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT'; 
add_header 'Access-Control-Allow-Credentials' 'true'; 
add_header 'Access-Control-Allow-Headers' 'User-Agent,Keep-Alive,Content-Type'; 
+0

+あなたの提案に感謝しました。これは試してみるほど魅力的です。 – TheBlackBenzKid

0

それはやり過ぎかもしれないが、私が持っている:

関連する問題