4

CORS 预检请求显然使用 OPTIONS 方法并具有 Origin 标头。但是,浏览器可以决定为任何HTTP 请求添加 Origin 标头。此外,OPTIONS 可用于 CORS 以外的其他功能。(如何)我能否准确识别(没有误报或否定)请求是否是 CORS 预检请求?

4

2 回答 2

14

检查预检请求中是否存在这些基本信息:

  1. 请求的 HTTP 方法是OPTIONS
  2. 它有一个Origin标题
  3. 它有一个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 回答