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

Какая категория запросов не будет проверяться в CORS?

DOM и браузер

В CORS не проверяются «простые запросы» (simple requests) — GET/HEAD/POST с определёнными заголовками и типами контента: для них браузер не делает preflight-запрос `OPTIONS`.

Простые запросы (без preflight)

Категория запросов, которые браузер отправляет сразу, без предварительного OPTIONS. Условия «простого» запроса:

  • Метод: GET, HEAD или POST.
  • Заголовки — только «безопасные» (Accept, Accept-Language, Content-Language, Content-Type с ограничениями).
  • Content-Type — только application/x-www-form-urlencoded, multipart/form-data или text/plain.
// Простой запрос — без preflight
fetch('https://api.com/data'); // GET, без кастомных заголовков

Для них браузер шлёт основной запрос сразу и проверяет заголовки CORS в ответе (но preflight OPTIONS не делает).

Сложные запросы (с preflight)

Требуют предварительного OPTIONS:

  • Методы PUT, DELETE, PATCH.
  • Кастомные заголовки (например, Authorization, кастомные).
  • Content-Type: application/json.
// Сложный — будет preflight OPTIONS
fetch('https://api.com/data', {
  method: 'PUT',
  headers: { 'Content-Type': 'application/json' },
});

Нюанс

«Простые запросы не проверяются preflight-ом» не значит «без CORS вообще»: браузер всё равно проверяет Access-Control-Allow-Origin в ответе. Просто не делает предварительный OPTIONS.

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

Preflight OPTIONS не делается для «простых запросов»: GET/HEAD/POST с безопасными заголовками и Content-Type из списка (x-www-form-urlencoded, multipart/form-data, text/plain). Сложные (PUT/DELETE/PATCH, кастомные заголовки, application/json) требуют preflight. При этом простые запросы всё равно проверяют Access-Control-Allow-Origin в ответе.

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