S3 CORS无法在Chrome中使用JQuery Ajax请求

Him*_*rzi 5 jquery google-chrome amazon-s3 amazon-web-services cors

我有以下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>
Run Code Online (Sandbox Code Playgroud)

我使用jquery向我的存储桶发出一个AJAX Post请求(注意,origin是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
      }
    }
});
Run Code Online (Sandbox Code Playgroud)

在提出请求后,我的chrome控制台抱怨:

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.
Run Code Online (Sandbox Code Playgroud)

任何关于为什么没有提出POST请求的帮助将不胜感激.

谢谢 !

abj*_*ror 1

我也即将深入研究这个问题。您是否尝试过将AllowedMethod更改为PUT?文件上传是使用 PUT 而不是 POST 完成的。

- 编辑

愚蠢的我。我收到 403 禁止 PUT 请求。POST 请求给出 400 状态代码。