Как я могу определить предварительный запрос CORS?
Предварительный запрос CORS, очевидно, использует метод OPTIONS и имеет заголовок Origin. Однако браузер может принять решение для любого HTTP-запроса добавить заголовок Origin. Кроме того, ОПЦИИ могут использоваться для других функций, чем CORS. (Как) Могу ли я точно определить (без ложных срабатываний или отрицательных значений), является ли запрос предварительным запросом CORS?
2 ответа
Проверьте заголовок Access-Control-Request-Method. Не имеет особого смысла отправлять его в запросе, отличном от предварительного запроса.
Проверьте наличие этой важной информации, присутствующей в предварительном запросе:
- HTTP-метод запроса
OPTIONS
- Имеет
Origin
заголовок - Имеет
Access-Control-Request-Method
заголовок, указывающий, какой метод он пытается использовать для использования вашего сервиса / ресурса
Соображения
Теоретически, вы могли бы быть настолько умным и вручную установить эти заголовки и попытаться по какой-то причине сделать какой-то запрос на fake-Preflight.
Однако ваш браузер будет жаловаться на следующий пример сообщения:Refused to set unsafe header "Origin"
(проверено как запрос XHR в Chrome), в то время как другие приложения, такие как Postman, будут устанавливать свои собственные Origin
как сказать Origin: chrome://extension...