Я'm в Гугл Хром расширение с разрешениями на в `":///*и" и я'м пытаясь сделать переход из XMLHttpRequest на принести АПИ.
Приложение хранит пользовательские входные данные для входа, которые клали прямо на как XHR's откройте() вызов для HTTP-авторизации, но при выборке уже не может быть использован напрямую в качестве параметра. Для HTTP basic авторизации, обойти это ограничение просто, как вы можете вручную установить заголовок авторизации:
fetch(url, {
headers: new Headers({ 'Authorization': 'Basic ' + btoa(login + ':' + pass) })
} });
Http дайджест-проверки подлинности однако требуется больше интерактивности; вы должны прочитать параметры, которые сервер отправляет вам с 401 ответ, чтобы выработать допустимый токен авторизации. Я'вэ пытался читать `веб-проверки подлинности заголовка ответа с этого фрагмента:
fetch(url).then(function(resp) {
resp.headers.forEach(function(val, key) { console.log(key + ' -> ' + val); });
}
Но все это я получаю этот выход:
content-type -> text/html; charset=iso-8859-1
Что само по себе является правильным, но, что's по-прежнему отсутствует около 6 полей по данным кром'с инструментами разработчика. Если я использую респ.заголовки.вам (на"веб-проверки подлинности", У)
(или любые другие поля на то пошло), я получаю только нуль
.
Любой шанс добраться до этих других полей с использованием выборки по API?
Существует ограничение на доступ к заголовкам ответа, когда вы используете принести API через ПДБС. Из-за этого ограничения, вы можете получить доступ только следующие стандартные заголовки:
Последнего Изменения
ПРАГМА
Когда вы пишете код для расширение для Google Chrome, вы используете кеш, следовательно, вы можете'т открыть все заголовки. Если вы управляете сервером, вы можете вернуть пользовательские данные в теле ответа `вместо
заголовки`
Подробнее об этом ограничении - https://developers.google.com/web/updates/2015/03/introduction-to-fetch#response_types
От уведомление
Вы также можете получить все заголовки при обращении к записи итератора.
// Display the key/value pairs
for (var pair of res.headers.entries()) {
console.log(pair[0]+ ': '+ pair[1]);
}
Кроме того, имейте в виду этого часть:
по соображениям безопасности, некоторые заголовки можно управлять только с помощью агента пользователя. Эти заголовки содержат запрещенные имена заголовка и запрещенные имена в заголовке ответа.
Для обеспечения обратной совместимости с браузерами, которые не поддерживают ES2015 итераторы (и, вероятно, также необходимо принести обещание полифиллы), в заголовки.по каждому элементу функция является наилучшим вариантом:
r.headers.forEach(function(value, name) {
console(name + ": " + value);
});
Испытания в IE11 с Bluebird как обещают полифилл и WHATWG-принести как принести полифилл. Заголовки.записи(), заголовки.ключи() и заголовки.значения() не работает.
Для нас исправить эту проблему ограничение, добавив выставлены имена заголовков достаточно хороша.
доступ-контроля-разоблачить-заголовки: headername1, headername2, ...
После установки этот заголовок, на стороне клиента скрипт может прочитать эти заголовки (headername1, headername2, ...) из ответа.