成为赞助商——支持中文 Agent 生态

了解赞助
库Agent场景库
← 返回用例列表

浏览器 CORS/预检失败分诊

根据控制台 CORS 报错与请求方法/头,分诊简单请求与预检、Allow-Origin/凭证模式;只出修复清单,不代改生产网关。

飞书DeepSeekClaudeChatGPT🛠️ 开发者工具

场景说明

面向独立开发者与前端/BFF:把「Blocked by CORS policy」翻译成可执行分诊表,区别于 OIDC 登录错误码与 Webhook 签名失败。

案例叙事

01他们做了什么

联调最常见的红字是 `blocked by CORS policy`。很多人一上来就 `*` 放行,却忽略预检、自定义头和 credentials。本地化做法是让 Agent 先分「简单请求还是 preflight」,再给响应头核对表。

MDN《CORS》说明:跨源请求可能先发预检(preflight)以确认服务器允许实际请求;部分请求不触发预检(旧称 simple requests,现由 Fetch 规范定义);服务器通过 `Access-Control-Allow-Origin` 等头决定是否与脚本共享响应;涉及 Cookie/HTTP 认证等 credentials 时有额外约束;出于安全,CORS 失败对 JavaScript 不可见具体细节。本场景输出分诊表与网关改配提纲。禁止建议「关闭浏览器同源策略」作为正式方案。

02实际效果

  • 源未披露量化「平均多快修好 CORS」;公开文只描述预检、简单请求、允许源与凭证相关行为及错误对 JS 不可见。
  • 前后端对齐要看的响应头,减少互相甩锅。
  • 最小复现步骤可留给联调文档。

03值得知道

  • CDN/API 网关可能剥离 OPTIONS;需在真正源站确认。
  • 本地开发代理与生产 CORS 配置常不一致,勿只在本地验证。
  • 上面写的是 MDN 规范说明,不是对你站点的安全审计。

04可复制提示词

CORS/预检失败分诊

你是浏览器 CORS 分诊助手。只根据控制台与请求元数据排查,不要编造已生效的响应头。

控制台报错:{{console_error}}
方法/URL/自定义头:{{request}}
是否 credentials/cookie:{{credentials}}
前后端域名:{{origins}}

输出 Markdown:
1. 定性:简单请求被拒 / 预检失败 / 凭证模式不匹配 / 重定向丢头 / 信息不足
2. 应核对的响应头清单(Allow-Origin/Methods/Headers/Credentials/Max-Age)
3. 最小复现(curl OPTIONS + 实际请求提纲)
4. 服务端改配建议(按优先级)
禁止建议用户安装「允许跨域」不安全扩展作为生产方案;禁止声称已修复上线。

联调说明给后端

把 CORS 需求写成给后端/网关的简短说明。

前端源列表:{{allowed_origins}}
需要的方法与头:{{methods_headers}}
是否带 cookie:{{cookies}}

输出:
1. 期望响应头示例(占位符)
2. 预检是否必须
3. 测试用例 3 条
4. 安全注意(不要随意 * + credentials)
语气中性,便于贴进工单。

05一手来源

怎么做

  1. 粘贴浏览器控制台报错原文、请求方法/自定义头、是否带 cookie、前后端域名
  2. Agent 判断更像简单请求还是预检失败,并列出服务端响应头核对项与最小复现
  3. 人工改 API 网关/后端 CORS 配置;Agent 不部署、不关浏览器安全策略

实用提示

  • CORS 失败细节对 JS 不可见是预期行为;要以 Network 面板的 OPTIONS/实际响应头为准
  • 与 oidc-sso-login-error-triage 不同:本条是浏览器跨源策略,不是 IdP 错误码
#CORS#预检#Access-Control#前端排障#BFF