コード: HAML ファイルで次のコードを取得しました。
= image_tag "https://s3.amazonaws.com/my_bucket/my_image.jpg"
s3 にリクエストを送信し、ブラウザーに画像を読み込みます。バケットで次の CORS 構成を取得しました。
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>https://www.my_site.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>
問題: クライアント側で画像を操作できるようにするために、画像は次のヘッダーで提供されることになっています。
Access-Control-Allow-Origin: https://www.my_site.com
Access-Control-Allow-Methods: GET
しかし、これは起こりません。
原因:ブラウザが「Origin」リクエスト ヘッダーを送信しないため、s3 が必要なヘッダーで応答しません。
「Origin」ヘッダーがないことが原因だと思う理由: の応答のため:
wget --server-response --header "Origin:https://www.my_site.com" "https://s3.amazonaws.com/my_bucket/my_image.jpg"
は次のとおりです。
HTTP/1.1 200 OK
x-amz-id-2: kQV8HEChV1...QHmHC1Gt/
x-amz-request-id: A626...4A2
Date: Wed, 03 Jul 2013 10:10:38 GMT
Access-Control-Allow-Origin: https://www.my_site.com
Access-Control-Allow-Methods: GET
Access-Control-Allow-Credentials: true
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
...
つまり、'Access-Control-Allow-Origin' と 'Access-Control-Allow-Methods' が存在します。
想定される解決策:
HAML ファイルの image_tag に必要なヘッダーを手動で追加する方法はありますか? 何かのようなもの:
= image_tag "https://s3.amazonaws.com/my_bucket/my_image.jpg", :headers=>["Origin"]