File upload 上载文件的Amazon S3 CORS请求失败
我使用AmazonS3作为后端。我已经正确配置了bucket,允许CORS从我的域中访问任何内容我已经测试过它是否适用于常规文件(即通过Amazon AWS控制台或S3命令行工具上传) 我的应用程序还将JSON文件本身上传到S3存储桶。有趣的是,上传成功需要正确配置CORS。确实如此,我的JSON文件被放入了bucket中 问题是,当我对我以前上传的这些文件发出CORS GET请求(jqueryFile upload 上载文件的Amazon S3 CORS请求失败,file-upload,amazon-web-services,amazon-s3,cors,File Upload,Amazon Web Services,Amazon S3,Cors,我使用AmazonS3作为后端。我已经正确配置了bucket,允许CORS从我的域中访问任何内容我已经测试过它是否适用于常规文件(即通过Amazon AWS控制台或S3命令行工具上传) 我的应用程序还将JSON文件本身上传到S3存储桶。有趣的是,上传成功需要正确配置CORS。确实如此,我的JSON文件被放入了bucket中 问题是,当我对我以前上传的这些文件发出CORS GET请求(jquery$.ajax)时,请求失败,出现典型的消息 No 'Access-Control-Allow-Orig
$.ajax
)时,请求失败,出现典型的消息
No 'Access-Control-Allow-Origin' header is present on the requested resource.
请注意,如果应用程序未上载同一存储桶、同一路径中的任何其他文件,但这些文件来自控制台或comnmand line tools,则请求成功。
为什么会这样
我的CORS配置:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>http://example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>https://example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
*
收到
3000
*
http://example.com
收到
放
邮递
删去
*
https://example.com
收到
放
邮递
删去
*
在jQuery文档的某个地方,您可以找到$.ajax的选项
jQuery.support.cors = true;
...
$.ajax(
url,
{
crossDomain: true,
data: {
sampleData
},
success: function() {
alert('Yeaaahhh')
},
error: function(a,b,c) {
alert('failed');
},
type: 'post'
}
);
但最好使用XMLHTTPRequest。比如:
var xhr = new XMLHTTPRequest;
xhr.open('POST', url);
xhr.onreadystatechange = function(state, status){
//do something
};
xhr.onload = function(event){
//do something
};
xhr.onerror = function(event){
//do something
};
xhr.send(data);
欢迎。您是否通过localhost执行ajax请求?这是否可能是同源策略问题()?这不是因为GET请求仅对以前从应用程序上载的文件失败,如果我通过S3控制台或S3CMD上载文件,则会成功。您是否也可以发布javascript代码?