开始之前

接口返回 HTTP 200,也可能被浏览器拦截。应把 OPTIONS 预检与实际请求当作两次独立交换,并按发起请求的 Origin 检查响应。

边看边操作在 HTTP / CORS 检测 中打开实际工作区
01

确认请求 Origin

协议、域名和端口都属于 Origin,看起来相近的开发地址也不是同源。

示例
https://app.example.com
02

检查 OPTIONS 预检

非简单请求需要检查 OPTIONS 状态,以及 Allow-Origin、Methods 和 Headers。

示例
OPTIONS /api
03

检查跳转和最终响应

重定向或错误处理页面可能没有 CORS Header,即使正常业务路由已经配置。

示例
3xx → 最终地址
04

谨慎启用凭据

带凭据请求不能同时使用 Allow-Credentials: true 和通配符 Origin。

示例
Access-Control-Allow-Credentials: true
要点总结
  • CORS 由浏览器执行,curl 不会替浏览器拦截。
  • 预检和真实响应都必须正确。
  • 应分别诊断状态码、重定向和 CORS。