Ответ вслух Junior CORS спрашивают часто обновлено

CORS

Вопрос

Что такое CORS и почему запрос падает с ошибкой политики?

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

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

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

Коротко

Same-origin policy запрещает читать ответ с другого origin (схема + домен + порт). Ключевое: ограничение накладывает браузер, запрос на сервер обычно уходит - поэтому из curl всё работает, а из вкладки нет.

Что должно прозвучать в ответе

  • браузер ограничивает запросы на другой origin - схема, домен, порт

  • ограничение работает в браузере, не на сервере

  • разрешение даёт сервер заголовком Access-Control-Allow-Origin

  • непростые запросы предваряются OPTIONS - preflight

  • для кук нужен credentials и точный origin вместо звёздочки

  • проксирование через свой бэкенд снимает вопрос целиком

Что могут спросить следом

  • Почему ошибка CORS видна в консоли, но запрос в Network прошёл
  • Что такое preflight и когда он не нужен
  • Чем CORS отличается от CSP

Разбор

Same-origin policy запрещает читать ответ с другого origin (схема + домен + порт). Ключевое: ограничение накладывает браузер, запрос на сервер обычно уходит - поэтому из curl всё работает, а из вкладки нет.

Разрешение выдаёт сервер: Access-Control-Allow-Origin. Для запросов с нестандартными заголовками или методами браузер сначала шлёт OPTIONS - preflight, и сервер должен ответить на него тоже.

Если нужны куки, включается credentials: 'include', и тогда Allow-Origin не может быть * - нужен конкретный домен плюс Allow-Credentials: true. На практике половина проблем решается проксированием через собственный бэкенд.

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

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

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