1

我正在通过 AJAX 进行直接到 S3 的多部分文件上传。除了 IE,在所有浏览器下一切正常。

S3Authorization在每个 POST 请求中都需要一个 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);
},
4

0 回答 0