私のアプリケーションはイメージを S3 に保存し、Cloudfront 経由でプロキシします。HTML5 キャンバス メソッド (クロスオリジン ポリシーを持つ) を使用できるように、新しい S3 CORS サポートを使用することに興奮していますが、S3 と Cloudfront を正しく構成できないようです。画像をキャンバス要素に変換しようとすると、まだ「Uncaught Error: SECURITY_ERR: DOM Exception 18」が発生します。
これが私がこれまでに持っているものです:
S3
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>MY_WEBSITE_URL</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>MY_CLOUDFRONT_URL</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
クラウドフロント
起源
Origin Protocol Policy: Match Viewer
HTTP Port: 80
HTTPS Port: 443
行動
Origin: MY_WEBSITE_URL
Object Caching: Use Origin Cache Headers
Forward Cookies: None
Forward Query Strings: Yes
私がここに欠けているものはありますか?
更新:ヘッダーをに変更しようとしました
<AllowedHeader>Content-*</AllowedHeader>
<AllowedHeader>Host</AllowedHeader>
この質問に基づいてAmazon S3 CORS (Cross-Origin Resource Sharing) and Firefox cross-domain font loading
まだ行きません。
更新: リクエストに関する詳細情報
Request
URL:https://d1r5nr1emc2xy5.cloudfront.net/uploaded/BAhbBlsHOgZmSSImMjAxMi8wOS8xMC8xOC81NC80Mi85NC9ncmFzczMuanBnBjoGRVQ/32c0cee8
Request Method:GET
Status Code:200 OK (from cache)
アップデート
たぶん私のリクエストが正しくなかったと思うので、CORSを有効にしてみました
img.crossOrigin = '';
しかし、その後、画像が読み込まれず、次のエラーが表示されます: Cross-Origin Resource Sharing ポリシーにより、クロスオリジンの画像の読み込みが拒否されました。