Выбор ответа 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).
Варианты ответа
- Нет: POST входит в список простых методов, поэтому OPTIONS не нужен
- Нет: preflight бывает только для методов PUT и DELETE, а здесь POST
- Да:
application/jsonне входит в список простых Content-Typeправильный ответ - Нет: поддомен
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 ошибок.