要旨:
s3 からの画像のタグ読み込み (HTMLimg
タグ) を使用するページがあり、xmlhttprequest
. タグの読み込みは CORS ヘッダーなしでキャッシュされるためxmlhttprequest
、キャッシュされたバージョンが表示され、そのヘッダーがチェックされ、クロス オリジン エラーで失敗します。
詳細:
edit : safari 5.1.6 と chrome 21.0.1180.89 の両方で失敗します。Firefox 14 では問題なく動作します。
S3 の新しい CORS を使用して、次のCORSRule
ようにセットアップします。
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>0</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
リクエストヘッダーにオリジンを設定せずにS3から画像をリクエストすると、レスポンスにCORSヘッダーなしで画像が返されます。
この get がキャッシュされ、後続の CORS リクエスト (リクエスト ヘッダーにオリジンを設定するもの) は、ブラウザがキャッシュから非 CORS バージョンを使用するため拒否されます。
これを解決する最善の方法は何ですか? 非 CORS バージョンがキャッシュされないように何かを設定できますか? ?some_flag
リクエストの URL にa を追加して、CORS リクエストを区別する必要がありますか?
理想的には、リクエストに「origin」が含まれていなくても、S3 が常に必要な CORS ヘッダーを送り返すようにします。