Я использую расширение Google Chrome с разрешениями для "*://*/*"
, и я пытаюсь сделать переход из XMLHttpRequest в Fetch API.
Расширение хранит данные входа пользователя, которые раньше были помещены непосредственно в вызов XHR open() для HTTP Auth, но в Fetch больше нельзя использовать напрямую в качестве параметра. Для HTTP Basic Auth обход этого ограничения тривиален, так как вы можете вручную установить заголовок авторизации:
fetch(url, {
headers: new Headers({ 'Authorization': 'Basic ' + btoa(login + ':' + pass) })
} });
HTTP Digest Auth однако требует большей интерактивности; вам необходимо прочитать параметры, которые сервер отправляет вам с ответом 401, чтобы создать действительный токен авторизации. Я попытался прочитать поле заголовка ответа WWW-Authenticate
с помощью этого фрагмента:
fetch(url).then(function(resp) {
resp.headers.forEach(function(val, key) { console.log(key + ' -> ' + val); });
}
Но я получаю только этот вывод:
content-type -> text/html; charset=iso-8859-1
Что само по себе является правильным, но все еще отсутствует около 6 полей в соответствии с инструментами разработчика Chrome. Если я использую resp.headers.get("WWW-Authenticate")
(или любое другое поле, если на то пошло), я получаю только null
.
Есть ли вероятность попасть в другие поля с помощью API-интерфейса Fetch?