Выбор ответа Middle CORS спрашивают часто обновлено

Звёздочка и куки в CORS

Вопрос

Фронт шлёт fetch(url, { credentials: 'include' }), сервер отвечает Access-Control-Allow-Origin: * и Access-Control-Allow-Credentials: true. Что будет?

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

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

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

Коротко

Правильный ответ: Браузер заблокирует ответ: с credentials нужен конкретный origin, а не. Спецификация запрещает в Access-Control-Allow-Origin для запросов с credentials: сервер должен вернуть точный origin (и обычно Vary: Origin).

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

  1. Всё сработает: звёздочка разрешает любой origin, в том числе с куками
  2. Куки отправятся, а заголовок Allow-Credentials браузер просто проигнорирует
  3. Сработает только в Chrome, Firefox и Safari такое запрещают
  4. Браузер заблокирует ответ: с credentials нужен конкретный origin, а не *правильный ответ

Разбор

Спецификация запрещает * в Access-Control-Allow-Origin для запросов с credentials: сервер должен вернуть точный origin (и обычно Vary: Origin). Поэтому первый вариант неверен. Браузер не игнорирует Allow-Credentials, он проверяет его вместе с origin. Правило одинаково во всех современных браузерах.

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

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

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