预检请求


预检请求

CORS  预检请求用于检查服务器是否支持 CORS 协议,并且是否允许使用特定的方法和标头。

浏览器会自动发送 OPTIONS 预检请求,主要在以下情况下:

  • 使用了非简单请求(即非 GETPOST(仅限 application/x-www-form-urlencodedmultipart/form-datatext/plain)、HEAD)。
  • 设置了自定义请求头(如 AuthorizationContent-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 预检请求的触发。

文章作者: fullsize
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 fullsize !
  目录