API · 排查路径

CORS 预检失败的定位方法

排查 CORS 预检时,先核对请求方法、自定义头和 credentials 的组合是否满足服务端允许条件。

排查步骤

查看、判断、复查

  1. 01

    从浏览器 Network 面板抓取完整的 OPTIONS 请求和响应,记录 Method、Headers 和响应码。

  2. 02

    确认 OPTIONS 得到服务端认可的成功响应,并列出实际请求所需的方法和请求头。携带凭证时,Access-Control-Allow-Origin 必须为明确来源,不能使用通配符 *。

  3. 03

    对比实际请求和预检请求:检查 Content-Type、自定义头和 REST 方法是否被允许。

  4. 04

    修复后在实际前端来源和浏览器中复测;若经过 CDN 或网关,另行确认 OPTIONS 的路由和缓存策略。

跟着示例核对

示例内容用于说明方法,非本站探测记录。复核于 2026-10-04。

{
  "origin": "https://app.example",
  "method": "POST",
  "credentials": "omit",
  "requestHeaders": [
    "X-Demo"
  ],
  "preflight": {
    "status": 204,
    "headers": "Access-Control-Allow-Origin: https://app.example\nAccess-Control-Allow-Methods: POST\nAccess-Control-Allow-Headers: X-Demo"
  },
  "response": {
    "status": 200,
    "headers": "Access-Control-Allow-Origin: https://app.example\nAccess-Control-Expose-Headers: X-Demo-Result\nX-Demo-Result: synthetic"
  },
  "readHeaders": [
    "X-Demo-Result"
  ]
}

怎样解释结果

合成案例A:请求POST包含X-Demo,需常规预检;OPTIONS的204、来源和头许可与实际响应分别核对。所填两段满足支持子集,x-demo-result按输入可见;这不证明请求已发出、业务授权或真实Cookie。仅凭204不能认定跨域已修复。

不符合预期时

案例B:保持预检不变,把实际response.headers改为空字符串,会得到实际来源许可阻断。案例C:省略整个response,实际结果未知。遇到缺材料或范围外停止推断;不以放开所有来源替代定位。

修改后复查

先在文本助手分别审读两阶段,再用原前端来源与目标浏览器取真实OPTIONS、实际响应和服务器日志;缺实际响应时区分没有发出、没有取得证据和已发出但脚本不可读。Authorization通配、头值/MIME、缓存、重定向与真实凭据策略需另行核对。

用CORS文本助手逐项解释所填条件 →