ES6: получение заголовков ответа из вызова выборки CORS - PullRequest
1 голос
/ 18 апреля 2019

У меня есть приложение реагирования, использующее API извлечения ES6 для вызова конечной точки отдыха с использованием CORS.Вызов выборки работает нормально, но я не могу получить заголовки ответа, которые отправляются с сервера.Я вижу заголовки ответов в Chromes devtools, так что я знаю, что они возвращаются мне;однако доступ к ним в коде, похоже, не работает для меня.Вот код (его базовая цепочка обещаний получения):

fetch(url)
  .then(response => {
    for (let header of response.headers) { < -- - headers is empty
      console.log(header);
    }
    return response;
  });

Но response.headers пуст.Но я четко вижу заголовки в Chrome.Есть ли причина, по которой вызов fetch не позволяет мне просматривать их?Что мне нужно, чтобы получить доступ к этим заголовкам?Сервер хранит некоторые заголовки приложений, которые мы хотели бы использовать.

ОБНОВЛЕНИЕ: я смог это исправить, добавив сервер в ответ на запрос OPTION:

response.setHeader("Access-Control-Expose-Headers", "X-Custom-Header");

Теперь по ответу команды fetch я могу выполнитьследующее:

const customHeader = response.headers.get('X-Custom-Header');

Спасибо Карим за помощь в этом!

1 Ответ

1 голос
/ 18 апреля 2019

Чтобы получить определенный заголовок, вам нужно вызвать response.headers.get(key)

, и повторяемый объект будет response.headers.entries, а не response.headers

for (let header of response.headers.entries()) {
  console.log(header);
}

https://developer.mozilla.org/en-US/docs/Web/API/Headers/entries

Кроме того, в сценарии cors приложению доступны только некоторые заголовки, поэтому не все заголовки, которые вы видите в инструментах chrome dev, обязательно доступны на уровне приложения.Для получения дополнительной информации проверьте этот ответ:

Чтение заголовков ответов с Fetch API

...