多くのユーザーが、HireHopで使用するためにHTML5、JavaScript、CSSの機能を利用して素晴らしいドキュメントをいくつか作成しています。これらのドキュメントの場合、ユーザーはサーバーに保存する特別なフォントを必要とする場合がありますが、フォントがHireHopドキュメントで機能しない場合があります。これは、ブラウザーでのクロスオリジンリソースシェアリング(CORS)の制限が原因です。
フォントがドキュメントに読み込まれない
ほとんどのWebブラウザーはクロスドメイン要求を許可しません。これは、同じ発信元のセキュリティポリシーが原因です。つまり、別のドメインのウェブフォントを使用すると、エラーが発生し、ブラウザやHireHopドキュメントでフォントが読み込まれないことがあります。
<style type="text/css"> @font-face { font-family: 'OpenSans'; src: url('https://my_server.com/fonts/OpenSans.woff2') format('woff2'); } html, body{ font: normal 16px OpenSans, sans-serif; } </style>
ソリューション
フォントのクロスオリジン制限を修正するには、フォントファイルをホストするリモートサーバーからの応答に、Access-Control-Allow-Originヘッダーを含める必要があります。
TypekitやGoogle Fontsなどのフォントサービス、またはBootstrapCDN、CdnJS、JsDelivrなどのコンテンツ配信ネットワークを使用して好みのフォントを読み込む場合、Access-Control-Allow-Originヘッダーは何もしないので、何もする必要はありません。すでに応答ヘッダーで送信されています。
Apache
Apacheウェブサーバーを設定するには、次のコードを httpd.conf
または.htaccess
ファイルに挿入します。
- ApacheにMIMEタイプのヘッダーを追加します。
AddType application/vnd.ms-fontobject .eot AddType application/x-font-opentype .otf AddType image/svg+xml .svg AddType application/x-font-ttf .ttf AddType application/font-woff .woff AddType application/font-woff2 .woff2
- MIMEタイプのApacheでクロスオリジンリソースシェアリング(CORS)を有効にします。
<IfModule mod_headers.c> <FilesMatch ".(eot|otf|svg|ttf|woff2?)$"> Header set Access-Control-Allow-Origin "*" </FilesMatch> </IfModule>
NGINX
NGINXウェブサーバーを設定するには、次のコードを/etc/nginx/nginx.conf
またはカスタムの/etc/nginx/conf.d/custom.conf
ファイルに配置します。
- NGINXにMIMEタイプのヘッダーを追加します。
application/vnd.ms-fontobject eot; application/x-font-opentype otf; image/svg+xml svg; application/x-font-ttf ttf; application/font-woff woff; application/font-woff2 woff2;
- MIMEタイプのNGINXでクロスオリジンリソースシェアリング(CORS)を有効にします。
location ~* .(eot|otf|svg|ttf|woff|woff2)$ { add_header Access-Control-Allow-Origin *; }
IIS
Microsoft IISを設定するには、次のコードを web.config
system.webServerブロックに追加します。
- IISでクロスオリジンリソースシェアリング(CORS)を有効にする
<system.webServer> <httpProtocol> <customHeaders> <add name="access-control-allow-origin" value="*" /> <add name="access-control-allow-headers" value="content-type" /> </customHeaders> </httpProtocol> </system.webServer>
PHP
サーバー設定を変更できない場合は、いつでもPHPを使用してフォントファイルを配信できます。
- 物理フォントファイルではなくサーバースクリプトファイルを使用する
<style type="text/css"> @font-face { font-family: 'OpenSans'; src: url('https://my_server.com/fonts/OpenSans.php') format('woff2'); } html, body{ font: normal 16px OpenSans, sans-serif; } </style>
- PHPでクロスドメインの@ font-faceの問題を修正する方法
<?php // fonts.php header('Access-Control-Allow-Origin: *'); header('Content-Type: application/font-woff2'); echo @file_get_contents('/fonts/OpenSans.woff2'); ?>