如何识别CORS预检请求?

Seb*_*ann 2 cors preflight

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

Art*_*par 9

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


Mat*_*ipe 9

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

  1. 请求的HTTP方法是 OPTIONS
  2. 它有一个Origin标题
  3. 它有一个Access-Control-Request-Method标题,指示它尝试用来使用您的服务/资源的实际方法

注意事项

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

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