Откуда в логах лишний OPTIONS
Вопрос
Фронтенд с https://app.shop.ru шлёт PUT с JSON на https://api.shop.ru. В DevTools перед ним виден OPTIONS к тому же адресу. Что это?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- CORS preflight: браузер спрашивает, разрешён ли кросс-доменный запросправильный ответ
- Баг фронтенда: запрос отправился дважды, первым с методом по умолчанию
- Проверка TLS-сертификата
api.shop.ruперед отправкой тела запроса - Автоматический повтор после ошибки, браузер шлёт его перед
PUT
Разбор
Для «непростых» кросс-доменных запросов (метод не GET/HEAD/POST, JSON в Content-Type, свои заголовки) браузер сначала шлёт preflight OPTIONS с Origin и Access-Control-Request-Method. Сервер отвечает заголовками Access-Control-Allow-*, и только потом уходит настоящий PUT. Это не дубль и не ретрай. TLS проверяется на уровне соединения, отдельным HTTP-запросом это не видно. Из Postman preflight не шлётся, поэтому «в Postman работает, в браузере нет» часто про CORS.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.