web-dev-qa-db-ja.com

クロスオリジンリソース共有ポリシーによってフォントのロードがブロックされました: 'Access-Control-Allow-Origin'

google Chromeでこのエラーが発生しています。すべてが正しくセットアップされていると思いました。しかし、そうではないでしょうか?

Originからのフォントhttp://skin.cdn.comは、クロスオリジンリソース共有ポリシーによってロードがブロックされています: 'Access-Control-Allow-Origin'ヘッダーがリクエストされたリソースにありません。したがって、Origin http://domain2.comはアクセスを許可されていません。

そして、htaccess(ドメインのルート)に次のものがあります。

<IfModule mod_headers.c>    
Header add Access-Control-Allow-Origin "http://skin.cdn.com" 
</IfModule>

質問:他の設定を忘れましたか?

どうもありがとう

15
snh_nl

ウェブサイトのルートディレクトリでhtaccessファイルのコードを変更します(つまり、public_html ".htaccess"ファイル)

<FilesMatch "\.(ttf|otf|eot|woff|woff2)$">
    <IfModule mod_headers.c>
        Header set Access-Control-Allow-Origin "http://skin.cdn.com"
    </IfModule>
</FilesMatch>

これで、CDNはリソースをロードして、それらをリソース(フォント)の受け渡しリソースとして呼び出すことができます。

警告:CDNですべてをパージして、ファイルが数分で更新されるようにする必要があります。

17
Prashant Tapase

@Prashant Tapaseの答えにコメントするほどの評判はありませんが、ルートディレクトリはPublic_htmlではありません。これは、ルートディレクトリのサブディレクトリです。 &私が調査してきた回答からFileMatchディレクティブはIfModule内にある必要があります

<IfModule mod_headers.c>
    <FilesMatch "\.(eot|otf|ttc|ttf|woff|woff2)$">
        Header set Access-Control-Allow-Origin "*"
    </FilesMatch>
</IfModule>

これが間違っている場合は修正してください。
または、彼が言及したようなフォントの特定のURL/URIを指定できます。

また、CDNの場合は、可能であればhttpではなくhttpsバージョンを使用する必要があります。

0
Ryan Stone