Fetch() отправляет заголовки заголовков нижнего регистра
Я пишу библиотеку API HTTP для использования в Atom Electron. Он основан на fetch
. Сервер находится вне моего контроля, но написан на PHP, и я вижу, что он проверяет заголовки с учетом регистра.
Мой код выглядит примерно так:
const headers = new Headers();
headers.append('Authorization', `Bearer ${key}`);
const init = {
method: 'GET',
headers: headers
}
const req = new Request(baseUrl + '/items?format=json');
return fetch(req, init);
Запрос отклоняется с ошибкой 403 FORBIDDEN
. Когда я смотрю на запрос в панели Electron Newtork, заголовок запроса присутствует, но Authorization
стал Authorization
.
Я знаю, что fetch()
просто соответствует стандарту HTTP, но есть ли простой способ получить fetch()
для отправки заголовков по мере их поставки?
Ответы
Ответ 1
В настоящее время выборка будет toLowercase()
всех заголовков. (здесь есть обсуждение https://github.com/whatwg/fetch/issues/304 о необязательном отключении).
Теперь вам может понадобиться http://api.jquery.com/jquery.ajax/ с опцией header
.
Ответ 2
Используя выборку и делая аналогичную вещь, мы делаем следующее:
const GLOBALS = require('./Globals');
const HEADERS = {
'Accept': 'application/json',
'Content-Type': 'application/json'
};
const resourceURL = '/some/endpoint'
const body = '';
var request = new Request(`${GLOBALS.API_ENDPOINT}${resourceURL}`, {
method: 'GET',
headers: new Headers(Object.assign(HEADERS, {'Authorization': `JWT ${token}`})),
body: body ? JSON.stringify(body) : null
});
return fetch(request)
.then(res => consume)
Take является псевдо псевдокодом, так как есть некоторые функциональные параметры, которые мы передаем, которые вычисляются в шаблоне литерала.