我正在通过AJAX直接进行S3多部分文件上传。在IE浏览器的所有浏览器下一切正常。
S3在每个POST请求中都需要一个Authorization
HTTP标头,其中包含正在上传的文件片的签名。
似乎IE从请求中删除了此标头,产生403响应。
更有趣的是IE不会剥离另一个自定义S3标题:x-amz-date
。
知道如何强制执行“授权”标题吗?
根据要求,这是我的代码:
initiateUpload: function() {
var response = this.sign({method:'POST', path: this.key + '?uploads'});
this.request({
method: 'POST',
url: response.url,
headers: {
'x-amz-date': response.date,
'Authorization': response.signature
},
onLoad: this.uploadParts.bind(this)
});
},
request: function(params){
var xhr = new XMLHttpRequest();
if (params.onLoad) xhr.addEventListener("load", params.onLoad, false);
if (params.onUploadStart) xhr.upload.onloadstart = params.onUploadStart;
if (params.onUploadProgress) xhr.upload.onprogress = params.onUploadProgress;
xhr.open(params.method, params.url, true);
for (h in params.headers)
xhr.setRequestHeader(h, params.headers[h]);
xhr.send(params.body);
},