如何识别CORS预检请求?

时间:2015-09-01 12:31:58

标签: cors preflight

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

2 个答案:

答案 0 :(得分:8)

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

  1. 请求的HTTP方法是OPTIONS
  2. 它有一个Origin标题
  3. 它有Access-Control-Request-Method标题,表示它尝试使用您的服务/资源的实际方法是什么
  4. <强>考虑

    从理论上讲,你可以如此聪明并手动设置这些标题,并出于某种原因尝试制作一些假的Preflight请求。

    但是,您的浏览器会抱怨以下示例消息: Refused to set unsafe header "Origin"(在Chrome上作为XHR请求测试) 而其他应用程序(如邮递员)会将自己的Origin设置为Origin: chrome://extension...

答案 1 :(得分:2)

检查Access-Control-Request-Method标头。在预检请求以外的请求中发送它是没有多大意义的。