Caman.js を使用して、Amazon S3 から画像を読み込もうとしています。Caman.js は画像効果を生成するための JS ライブラリであり、画像のコピーをキャンバス オブジェクトに作成し、データに対してさまざまなピクセル操作を行うことによって機能します。キャンバスには、そのデータが外部サーバーから送信されたときに JavaScript がピクセル データにアクセスする機能を制限するために、セキュリティの詳細が設定されているようです。 )。
私はこれまでCORSに遭遇したことがなく、それについて学ぼうとしていますが、これを機能させることができないようです. 私が理解できることから、Chrome に表示されるこのエラーを回避するために:
Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
Uncaught Error: SECURITY_ERR: DOM Exception 18
Amazon バケットに CORS ファイルを設定する必要があります。私が使用しているCORSファイルは次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
これは効果がないようです。これらの CORS ファイルは Amazon によってキャッシュされますか? それとも、すぐに有効になると期待すべきですか? -- 更新: 8 時間後に試してみましたが、まだ機能していないので、キャッシュは問題ではないと思います。
上で指定した CORS ファイルはすべてを許可するように見えますね。CORS と Google で Chrome のドキュメントを調べましたが、良い答えが見つからないようです。以前にこの問題に対処した人はいますか?
ありがとう!ケビン
更新: Amazon への画像リクエストから取得したレスポンス ヘッダーは次のとおりです。
Date:Thu, 18 Oct 2012 04:52:40 GMT
ETag:"9848ce610c994521295d8aa38b47bab9"
Last-Modified:Thu, 18 Oct 2012 04:19:45 GMT
Server:AmazonS3
x-amz-id-2:Govue0tJg5MLYedr/l7T2RU5RApXLZBwJ8p507hS+sLGqxYojRnVKqj4jRHRZsZ6
x-amz-request-id:F4FF5B669C3156D2