直接回答:CORS 不是防御机制,而是对浏览器同源策略的"受控放行",解决的是跨域读取响应的合法需求。配置错误的 CORS 反而会把同源策略保护下的接口暴露出去:比如把请求的 Origin 直接回显到 Access-Control-Allow-Origin,同时又允许携带凭证(Access-Control-Allow-Credentials: true),那么任意恶意页面都能以受害者身份读取接口数据,效果相当于"可读取响应的 CSRF"。

展开解析:常见错误有三种。其一直接反射 Origin:规范禁止 Allow-Origin: * 与 credentials 共存,于是有些实现改为回显请求 Origin,等于对所有人开门。其二白名单校验写错:用 endsWith 之类宽松匹配,被 evil-example.com 绕过;把 null Origin 误加白名单也有真实利用案例。正确做法:服务端维护精确 Origin 白名单并严格匹配;不需要凭证就别开 credentials。最后牢记:CORS 只约束浏览器,curl 和服务端间请求完全不受限,它不能替代鉴权与 CSRF 防护。

追问方向:什么条件会触发预检请求?CORS 与 CSRF 是什么关系?SameSite=Lax 普及后 CORS 误配还危险吗?

(约 400 字)