S3 PUT-запрос от края Microsoft и IE не выполняется из-за точки с запятой в параметре - PullRequest
0 голосов
/ 12 февраля 2019

Эта проблема может быть связана с этим вопросом , но платформа отличается, поэтому я не уверен.Я написал JavaScript-код в angularJS для загрузки изображения в 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) {})

Я вижу 403 моего запроса PUT на вкладке сети. Я не являюсьЯ уверен, что я могу создать JSfiddle для воспроизведения этой проблемы, но по какой-то причине

Chrome или Firefox обрабатывают URL-адрес, и я вижу на вкладке сети такие параметры, как

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, и я вижу ту же проблему с отправленными параметрами.Любое руководство будет высоко ценится.

...