API接入SCDN后只有OPTIONS失败:把预检与业务请求分开排查

沿浏览器预检与实际业务请求两条记录定位失败,核对来源、方法、请求头、挑战页和预检缓存,保留业务接口的正常鉴权。

接口在命令行工具里能返回结果,网页却提示跨域错误,源站还查不到POST记录,这时应先看浏览器是否发出了OPTIONS预检。实际业务请求可能根本没有开始,继续调业务参数无法解决前一阶段的失败。

两个浏览器来源通过受控桥梁交换信息的 AI 示意图
AI概念示意图,不代表实际部署、客户测试或事件现场。

预检询问的内容与业务操作不同

Fetch规范定义,CORS预检使用OPTIONS,表达后续请求准备采用的方法和请求头;跨域预检不携带业务请求所用的凭据。因此不能要求预检先通过依赖会话Cookie的登录流程。

允许符合条件的预检,不等于允许匿名执行实际操作。真正的业务请求仍要执行身份认证、对象授权和输入检查,两阶段应分别设计和验证。

从一条失败请求建立记录

记录 要观察的值 定位目的
页面来源 协议、主机及端口 确定实际Origin
预检请求 目标URL、计划方法和头部名称 确认浏览器在询问什么
预检响应 状态、允许字段及正文类型 判断是否收到登录页或挑战页
后续业务请求 是否发出、实际状态与授权结果 区分预检失败和应用失败

只记录头部名称和必要的非敏感值,不把实际访问令牌复制到排障材料。测试URL要与网页使用的地址完全一致,避免拿另一个环境的结果做证明。

检查是哪一层提前返回

先在边缘日志查OPTIONS的处理动作,再看代理与应用是否收到。如果边缘返回需要执行JavaScript的挑战页面,浏览器不会把它当成正常的预检许可。若代理将请求转到登录页,也应回到预检的职责重新配置。

规则应限定到实际需要的API路径和允许来源,核对方法及请求头集合。不要为了一个接口全站放行OPTIONS,也不要把任意Origin原样返回后就认为安全。业务页面、第三方集成和管理界面的来源通常需要分别登记。

不要忽略预检结果缓存

浏览器有独立的CORS预检缓存,Access-Control-Max-Age参与控制相关许可信息的保留。它与CDN缓存业务响应不是同一件事。因此修改服务端策略后,旧浏览器状态与新会话可能表现不同。

验证时记录浏览器环境和请求条件,分别观察首次请求与后续请求。不要把“第二次没看到OPTIONS”直接判成规则失效,也不要只用一个已经成功预检的会话验证刚修改的策略。

用正反两组业务结果收尾

允许来源应能完成预检和合法操作;不允许来源不应取得对应跨域许可。与此同时,无凭据或无对象权限的实际请求仍应被业务服务拒绝。CORS限制浏览器读取行为,不能替代服务端访问控制。

把两阶段记录交给SCDN实施团队,可以更快定位到具体规则。上线后还应观察允许来源的变更流程,避免前端换域名时临时扩大许可范围且长期不回收。

资料核对日期:2026年10月30日。本文由AI辅助整理,技术事实依据文内原始资料核对。示例与操作清单供实施参考;产品配置和软件维护状态以实施时的官方资料为准。

继续阅读:网站安全与加速专题 · 内容说明与纠错

涉及漏洞与安全事件的文章,请结合文中来源、发布时间和厂商最新公告核对。产品配置与防护效果以实际业务验证为准;资料纠错可联系 support@waf.pro。

WAFPRO最新文章

Log4Shell历史复盘:被记录的数据为何也属于系统输入

2026-11-7 20:00:00

WAFPRO最新文章

新建CDN域名仍提示不存在:DNS负缓存与记录类型怎样区分

2026-11-8 11:00:00

❯
搜索