Выбор ответа Middle CORS спрашивают часто обновлено

Будет ли preflight у POST с JSON

Вопрос

Будет ли preflight-запрос перед этим вызовом с https://app.ru?

fetch('https://api.app.ru/orders', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ id: 1 })
});

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Да: application/json не входит в список простых Content-Type. Простой запрос требует и простого метода, и простого Content-Type (text/plain, multipart/form-data, application/x-www-form-urlencoded).

Варианты ответа

  1. Нет: POST входит в список простых методов, поэтому OPTIONS не нужен
  2. Нет: preflight бывает только для методов PUT и DELETE, а здесь POST
  3. Да: application/json не входит в список простых Content-Typeправильный ответ
  4. Нет: поддомен api.app.ru того же сайта считается тем же origin

Разбор

Простой запрос требует и простого метода, и простого Content-Type (text/plain, multipart/form-data, application/x-www-form-urlencoded). JSON к ним не относится, поэтому будет OPTIONS. POST простой метод, но одного метода мало. Preflight касается не только PUT и DELETE, а любых непростых запросов. Поддомен api.app.ru это другой origin.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме