此问题可能与this question有关,但是平台不同,所以我不确定。我已经用angularJS编写了JavaScript代码,以将图像上传到s3,在大多数现代浏览器上,它似乎都可以正常工作,但据我测试,在Microsoft Edge和IE 11上都无法运行。
代码执行PUT调用以使用图像文件更新现有的s3 URI
let s3URLforImageUpload = encodeURI(response.payload.data) // already existing URI;
$http.put(s3URLforImageUpload, file, {headers: {'Content-Type': file.type}}) // file from ng-select directive
.success(function(response) {})
.catch(function(error) {})
我可以在网络标签中看到我的PUT请求的403
。我不确定如何创建JSfiddle来重现此问题,但是由于某种原因会发生
Chrome或Firefox处理网址,我可以在网络标签中看到类似
的参数X-Amz-SignedHeaders: content-type;host
但是在Microsoft Edge和IE11上,我将host
视为一个单独的参数
X-Amz-SignedHeaders: content-type
host:
我尝试更改将请求发送到xmlhttprequest
的代码,以查看参数发送方式是否有任何变化,并且它也给我相同的响应。
let s3URLforImageUpload = encodeURI(response.payload.data);
var req = new XMLHttpRequest();
req.onload = function(response) {
console.log("RESPONSE 2", response);
}
req.open("PUT", s3URLforImageUpload);
req.setRequestHeader("Content-type", file.type);
req.send(file);
我得到相同的403响应,并且发送的参数也出现相同的问题。任何指导将不胜感激。