Pedido S3 PUT do Microsoft Edge e o IE falha devido ao ponto e vírgula no parâmetro
Este problema pode estar relacionado aessa questã, mas a plataforma é diferente, então não tenho certeza. Eu tinha escrito o código JavaScript no angularJS para fazer upload de uma imagem para o s3, ele parece funcionar bem na maioria dos navegadores modernos, mas falha no Microsoft Edge e no IE 11 até agor
O código faz uma chamada PUT para atualizar um URI s3 existente com um arquivo de imagem
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) {})
Eu posso ver um403
na minha solicitação PUT na guia rede.Não sei como posso criar um JSfiddle para reproduzir esse problema, mas o que acontece é por algum motivo
Chrome ou Firefox tratam o URL e posso ver na guia rede parâmetros como
X-Amz-SignedHeaders: content-type;host
Mas no Microsoft edge e IE11, vejohost
como um parâmetro separado
X-Amz-SignedHeaders: content-type
host:
Tentei alterar o código para enviar a solicitação paraxmlhttprequest
para ver se alguma coisa muda com a forma como os parâmetros são enviados e também me dá a mesma respost
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);
Recebo a mesma resposta 403 e vejo o mesmo problema com os parâmetros enviados. Qualquer orientação será muito apreciad