我正在尝试使用jquery将文件直接上传到S3。
我按照以下步骤配置CORS设置文件,如下所示进行测试:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
然后我的jquery代码:
$.ajax({
url: this.action,
type: 'POST',
dataType: 'xml',
data: $('form').serialize(),
crossDomain: true,
cache: false,
success: function(data) {
window.alert('test');
}
});
如果我直接发布表单,没有ajax,它工作正常...但是因为我想在上传完成后调用一个方法我正在使用jquery来完成这项工作。 但即使在设置CORS设置后,我仍然会收到错误:Access-Control-Allow-Origin不允许使用Origin xxxx。
请求标头:
Accept:application/xml, text/xml, */*; q=0.01
Cache-Control:no-cache
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Origin:http://localhost:8000
Pragma:no-cache
Referer:http://localhost:8000/upload
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17
请求状态为CANCELED,类型为PENDING。
答案 0 :(得分:0)
您缺少POLICY_JSON和相应的签名,以证明原始表单确实是由存储桶拥有者构建的。请查看此链接了解详细信息: