5

次の S3 バケットがあります: http://my-bucket.s3-website-eu-west-1.amazonaws.com/

http://docs.amazonwebservices.com/AmazonS3/latest/dev/cors.htmlに従って、CORS 構成を追加しました。

<CORSConfiguration>
 <CORSRule>
<AllowedHeader>x-requested-with</AllowedHeader>
 <AllowedHeader>*</AllowedHeader>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>POST</AllowedMethod>
    </CORSRule>
 <CORSRule>
   <AllowedOrigin>http://*.test.com</AllowedOrigin>
   <AllowedMethod>POST</AllowedMethod>
 </CORSRule>
</CORSConfiguration>

jquery を使用して自分のバケットに AJAX Post リクエストを作成します (オリジンは jd.test.com:8000 です)。

$.ajax('http://my-bucket.s3-website-eu-west-1.amazonaws.com/', {
    type: "POST",
    data: $(":hidden", self).serializeArray(),
    files: $(":file", self),
    statusCode: {
      204: function(){
        //do something
      }
    }
});

リクエストを行うと、私のクロムコンソールは不平を言います:

XMLHttpRequest cannot load http://my-bucket.s3-website-eu-west-1.amazonaws.com/. Origin http://www.jd.test.com:8000 is not allowed by Access-Control-Allow-Origin.

POST リクエストが行われない理由についてのヘルプをいただければ幸いです。

ありがとう !

4

4 に答える 4

2

私は簡単なチュートリアルを書きました。レールを使用していますが、他のサーバー フレームワークに簡単に変換できます。
アップロードは素晴らしいjQuery file uploadによって処理されます。また、cors を使用して s3 に直接アップロードします。

于 2012-09-30T21:20:48.150 に答える
2

ポート番号はオリジンの一部であるため、CORSConfiguration にはポート番号が含まれている必要があります。たとえば、 http: //en.wikipedia.org/wiki/Same_origin_policyを参照してください。

于 2012-12-10T16:54:09.907 に答える
1

私もこれに飛び込もうとしています。AllowedMethod を PUT に変更してみましたか? ファイルのアップロードは、POST ではなく PUT を使用して行われます。

- 編集

愚かな私。PUT リクエストで 403 禁止されています。POST リクエストは 400 ステータス コードを返します。

于 2012-09-05T10:52:21.217 に答える