2014 年 9 月 10 日更新:
Cloudfront は現在 CORS を適切にサポートしているため、以下のクエリ文字列ハックを行う必要はもうありません。詳細については、 http://aws.amazon.com/blogs/aws/enhanced-cloudfront-customization/およびこの回答を参照してください: https://stackoverflow.com/a/25305915/308315
OK、ドキュメントの例から少し調整して、以下の構成を使用してフォントが機能するようになりました。
私のフォントは S3 でホストされていますが、クラウドフロントが前面にあります。
なぜそれが機能するのかはわかりませんが、おそらく<AllowedMethod>
GET
and<AllowedHeader>
Content-*
が必要だと思います。
Amazon S3 の CORS 構成に精通している方であれば、この点について少しでも理解を深めていただければ幸いです。
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>https://mydomain.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Content-*</AllowedHeader>
<AllowedHeader>Host</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>https://*.mydomain.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Content-*</AllowedHeader>
<AllowedHeader>Host</AllowedHeader>
</CORSRule>
</CORSConfiguration>
編集:
一部の開発者は、Cloudfront がAccess-Control-Allow-Origin
ヘッダーをキャッシュするという問題に直面しています。この問題は、以下のリンク ( https://forums.aws.amazon.com/thread.jspa?threadID=114646 )で AWS スタッフによって対処されており、@Jeff-Atwood によってコメントされています。
リンクされたスレッドから、回避策として、異なるドメインからの呼び出しを区別するためにクエリ文字列を使用することをお勧めします。ここで短縮された例を再現します。
curl
応答ヘッダーのチェックに使用:
ドメイン A: a.domain.com
curl -i -H "Origin: https://a.domain.com" http://hashhashhash.cloudfront.net/font.woff?https_a.domain.com
ドメイン A からの応答ヘッダー:
Access-Control-Allow-Origin: https://a.domain.com
Access-Control-Allow-Methods: GET
Access-Control-Max-Age: 3000
Access-Control-Allow-Credentials: true
X-Cache: Miss from Cloudfront
ドメイン B: b.domain.com
curl -i -H "Origin: http://b.domain.com" http://hashhashhash.cloudfront.net/font.woff?http_b.domain.com
ドメイン B からの応答ヘッダー:
Access-Control-Allow-Origin: http://b.domain.com
Access-Control-Allow-Methods: GET
Access-Control-Max-Age: 3000
Access-Control-Allow-Credentials: true
X-Cache: Miss from Cloudfront
Access-Control-Allow-Origin
がCloudfront キャッシュを通過した異なる値を返したことに気付くでしょう。