CORS 预检请求显然使用 OPTIONS 方法并具有 Origin 标头。但是,浏览器可以决定为任何HTTP 请求添加 Origin 标头。此外,OPTIONS 可用于 CORS 以外的其他功能。(如何)我能否准确识别(没有误报或否定)请求是否是 CORS 预检请求?
问问题
5972 次
2 回答
14
检查预检请求中是否存在这些基本信息:
- 请求的 HTTP 方法是
OPTIONS
- 它有一个
Origin
标题 - 它有一个
Access-Control-Request-Method
标头,指示它试图用来消耗您的服务/资源的实际方法是什么
注意事项
从理论上讲,您可以非常聪明并手动设置这些标头,并出于某种原因尝试发出一些虚假的预检请求。
但是,您的浏览器会抱怨以下示例消息:(
Refused to set unsafe header "Origin"
在 Chrome 上测试为 XHR 请求)而其他应用程序(例如 Postman)将自己设置Origin
为,例如Origin: chrome://extension...
于 2016-01-13T19:34:54.250 回答
5
检查Access-Control-Request-Method标头。在预检请求以外的请求中发送它没有多大意义。
于 2015-09-01T12:36:44.433 回答