CORS
Вопрос
Что такое CORS и почему запрос падает с ошибкой политики?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
браузер ограничивает запросы на другой 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 ошибок.