CORS для API: preflight, куки и заголовки, без которых фронт «молчит»
Почему браузер блокирует простой GET с другого origin, что такое preflight и как настроить `Access-Control-Allow-Origin` без `*` при куках.
Same-Origin Policy изолирует документы; CORS — механизм явного разрешения кросс-доменных запросов с контролируемыми заголовками и методами.
Запросы «не простые» (кастомные заголовки, PUT, JSON с особыми типами) вызывают OPTIONS preflight — сервер должен ответить согласованным набором `Access-Control-*`.
- Cross-Origin Resource Sharing (CORS) — MDN — Полный разбор simple и preflight.
Куки и `credentials`
При `fetch(..., { credentials: 'include' })` нельзя отвечать `Access-Control-Allow-Origin: *` — нужен конкретный origin и `Access-Control-Allow-Credentials: true`.
Разводите публичный API и браузерные BFF-эндпоинты: так проще держать политику CORS узкой.