首页/网络/协议速查/CORS 预检请求流程
HTTP 头与缓存70 条

CORS 预检请求流程

非简单跨域请求前,浏览器先发 OPTIONS 预检:确认来源、方法与头都被允许后才发真实请求。

协议速查网络更新于 2026-10-12
触发条件方法非 GET/HEAD/POST,或 Content-Type 非三类简单类型,或带自定义头
预检报文Origin + Access-Control-Request-Method + Access-Control-Request-Headers
通过条件204/200 且返回匹配的 ACAO/ACAM/ACAH

预检交互示例

预检交互示例
OPTIONS /api/data HTTP/1.1
Origin: https://app.example.com
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: content-type, x-token

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://app.example.com
Access-Control-Allow-Methods: GET, PUT
Access-Control-Allow-Headers: content-type, x-token
Access-Control-Max-Age: 600
预检失败 ≠ 接口故障:浏览器控制台会明确报 CORS 错,服务端日志甚至看不到真实请求;先解决 OPTIONS 响应。

易错点

  • 网关把 OPTIONS 请求当无效请求拦掉(401/405),导致跨域全挂
  • Access-Control-Max-Age 配得短,每个请求都带一次预检,性能悄悄翻倍

数据来源与参考

  • WHATWG Fetch 标准(CORS-preflight)
  • MDN:CORS 预检请求

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌