我有以下 S3 存储桶:http://my-bucket.s3-website-eu-west-1.amazonaws.com/
我已经添加了 CORS 配置,按照 http://docs.amazonwebservices.com/AmazonS3/latest/dev/cors.html :
<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
}
}
});
提出请求后,我的 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.
任何有关为什么未发出 POST 请求的帮助将不胜感激。
谢谢!
最佳答案
您的 CORSConfiguration 必须包含端口号,因为端口号是源的一部分,请参阅例如http://en.wikipedia.org/wiki/Same_origin_policy
关于google-chrome - S3 CORS 无法在 Chrome 中处理 JQuery Ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12267835/