Чем отличаются простые и сложные (preflight) запросы в контексте CORS?
Answer from AI
sobes.tech AI
В контексте CORS (Cross-Origin Resource Sharing) различают простые и сложные (preflight) запросы:
-
Простые запросы — это HTTP-запросы, которые удовлетворяют определённым условиям:
- Метод запроса:
GET,POSTилиHEAD - Заголовки ограничены набором:
Accept,Accept-Language,Content-Language,Content-Type(со значениямиapplication/x-www-form-urlencoded,multipart/form-dataилиtext/plain) - Отсутствие нестандартных заголовков
Такие запросы браузер отправляет напрямую, и сервер отвечает с нужными CORS-заголовками.
- Метод запроса:
-
Сложные (preflight) запросы — это запросы, которые не соответствуют критериям простых. Например, если используется метод
PUT,DELETEили нестандартные заголовки, илиContent-Typeотличный от перечисленных выше.В этом случае браузер сначала отправляет preflight-запрос — OPTIONS-запрос к серверу, чтобы проверить, разрешён ли основной запрос. Сервер должен ответить с заголовками, разрешающими данный метод и заголовки.
Пример:
Если вы делаете POST с Content-Type: application/json, браузер сначала отправит OPTIONS-запрос (preflight), и только после успешного ответа выполнит основной запрос.
Это механизм безопасности, чтобы предотвратить нежелательные запросы между доменами.