预检请求
CORS 预检请求用于检查服务器是否支持 CORS 协议,并且是否允许使用特定的方法和标头。
浏览器会自动发送 OPTIONS 预检请求,主要在以下情况下:
- 使用了非简单请求(即非 GET、POST(仅限application/x-www-form-urlencoded、multipart/form-data、text/plain)、HEAD)。
- 设置了自定义请求头(如 Authorization、Content-Type: application/json)。
- 跨域请求涉及 credentials(如 withCredentials: true)。
- 使用了 PUT、DELETE、PATCH 等方法。
服务器正常响应 options 请求
res.set({
  "Access-Control-Allow-Origin": "*", // 允许的来源
  "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS", // 允许的方法
  "Access-Control-Allow-Headers": "Content-Type, Authorization", // 允许的请求头
  "Access-Control-Allow-Credentials": "true", // 允许携带 Cookie
});总结
- 浏览器会自动发送 OPTIONS预检请求来检查 CORS 规则。
- 服务器需要正确返回 Access-Control-Allow-Origin等 CORS 头信息。
- 通过使用简单请求、避免自定义头,可以减少 OPTIONS预检请求的触发。
 
                        
                        