带凭证的CORS请求:OPTIONS后后续请求需返回指定响应头吗?
问题解答
行为是否符合预期?
是,完全符合浏览器的CORS安全规则。
是否需要调整配置?
需要,必须修改服务器配置,让所有携带凭证的实际请求(包括你的POST请求)和OPTIONS预请求都返回Access-Control-Allow-Credentials: true响应头。
具体原因说明
- 预请求(OPTIONS)中的
Access-Control-Allow-Credentials: true只是告知浏览器:该服务器允许后续的实际请求携带凭证,这是浏览器允许发送实际请求的前提,但不代表实际请求的响应可以省略这个头。 - 当实际请求(比如你的POST请求)携带凭证时,浏览器会强制检查实际响应是否包含
Access-Control-Allow-Credentials: true。如果没有,浏览器会直接拦截该响应,不会把响应内容返回给前端代码,这就是你遇到请求失败的原因。 - 简单来说,只要跨域请求需要携带凭证,预请求和实际请求的响应都必须带上这个头,二者缺一不可。
内容的提问来源于stack exchange,提问作者Cristian V
相关产品推荐
相关产品推荐

