前端知库

CORS 携带凭据时有哪些限制?

说明 credentials、Access-Control-Allow-Origin、预检和 Cookie 属性之间的关系,避免把 CORS 当成服务端鉴权。

参考答案

跨源请求是否能被 JavaScript 读取,由服务端 CORS 响应头决定。请求携带凭据时,服务端不能把 Access-Control-Allow-Origin 设为 *,必须返回明确的源,并设置 Access-Control-Allow-Credentials: true;客户端也要显式使用 credentials: 'include' 或对应配置。

预检请求会先询问方法、请求头和凭据策略,服务端必须正确响应允许的源、方法和请求头。CORS 只控制浏览器脚本读取响应,不能替代服务端身份认证、CSRF 防护或资源权限检查。

Cookie 还受 SameSite、Secure、第三方 Cookie 策略和域名范围影响。调试时要分别查看预检、实际请求、响应头和浏览器 Cookie 决策,不能只看到服务端返回 200 就认为跨域成功。