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

В каких случаях возникает CORS?

DOM и браузер

CORS возникает при кросс-доменном запросе из браузера — когда origin страницы (протокол + домен + порт) отличается от origin запрашиваемого ресурса.

Что такое разный origin

Origin = протокол + домен + порт. Если хоть что-то отличается — запрос кросс-доменный, и вступает в силу CORS:

Страница: https://app.com
Запрос к: https://api.app.com   → другой поддомен → CORS
Запрос к: http://app.com        → другой протокол → CORS
Запрос к: https://app.com:8080  → другой порт → CORS
Запрос к: https://app.com/api   → тот же origin → CORS нет

Когда CORS применяется

  • fetch/XMLHttpRequest к другому origin.
  • Загрузка шрифтов, некоторых изображений (canvas), WebGL-текстур с другого origin.

Когда НЕ применяется

  • Запросы к тому же origin.
  • Обычные <img>, <script>, <link> (они грузятся, но JS не может читать их содержимое кросс-доменно).
  • Запросы не из браузера (curl, сервер-сервер) — CORS там нет.

Простые и сложные запросы

  • Простые (GET/POST с простыми заголовками) — идут сразу, браузер проверяет ответ.
  • Сложные (другие методы, кастомные заголовки, JSON) — сначала preflight OPTIONS.

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

CORS возникает при браузерном запросе к другому origin (отличается протокол, домен или порт). Тот же origin — CORS нет; запросы вне браузера — тоже. Сложные запросы предваряет preflight OPTIONS. Сервер разрешает доступ заголовками Access-Control-Allow-*.

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