Выбор ответа Middle CORS обновлено

Почему не виден заголовок ответа

Вопрос

Сервер на другом origin отдаёт X-Total-Count: 120, CORS для origin настроен. В DevTools заголовок видно, а res.headers.get('X-Total-Count') возвращает null. Как исправить?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Добавить на сервере Access-Control-Expose-Headers: X-Total-Count. Скрипту на чужом origin доступны только безопасные заголовки ответа (Content-Type, Cache-Control и т.п.).

Варианты ответа

  1. Добавить на клиенте в fetch опцию credentials: 'include'
  2. Добавить на сервере Access-Control-Expose-Headers: X-Total-Countправильный ответ
  3. Добавить на сервере заголовок в Access-Control-Allow-Headers
  4. Переименовать заголовок без префикса X-, например в Total-Count

Разбор

Скрипту на чужом origin доступны только безопасные заголовки ответа (Content-Type, Cache-Control и т.п.). Остальные сервер открывает через Access-Control-Expose-Headers. credentials отвечает за куки, а не за заголовки. Allow-Headers перечисляет заголовки запроса, которые можно присылать. Префикс имени ни на что не влияет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме