PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

Что такое CORS?

DOM и браузер

CORS (Cross-Origin Resource Sharing) — это механизм безопасности браузера, который через HTTP-заголовки разрешает или запрещает запросы к ресурсам с другого origin (протокол + домен + порт).

Зачем нужен

По умолчанию действует Same-Origin Policy: скрипт со страницы a.com не может читать ответы запросов к api.b.com. CORS — контролируемое исключение: сервер явно указывает, каким источникам можно.

Как работает

Браузер добавляет к кросс-доменному запросу заголовок Origin, а сервер отвечает Access-Control-Allow-Origin:

Access-Control-Allow-Origin: https://a.com
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST

Если заголовок не совпадает — браузер блокирует чтение ответа (сам запрос мог дойти до сервера).

Preflight-запрос

Для «непростых» запросов (методы кроме GET/POST/HEAD, кастомные заголовки, Content-Type: application/json) браузер сначала шлёт OPTIONS — предзапрос, спрашивая разрешение.

Нюансы

  • CORS — защита браузера, а не сервера; из curl/Postman ограничений нет.
  • Ошибка CORS означает, что сервер не прислал нужные заголовки.
  • Для cookie нужны credentials: 'include' и Access-Control-Allow-Credentials: true (тогда origin нельзя *).

Коротко для собеседования

CORS — механизм браузера, ослабляющий Same-Origin Policy через заголовки Access-Control-Allow-*. Сервер решает, каким origin можно читать ответ. Для сложных запросов есть preflight OPTIONS.

Подробнее: MDN — CORS

Другие вопросы раздела