withCredentials开启与响应头之间设置的冲突关系

withCredentials 是用于跨域请求中,是否发送凭证(包括 cookies 和 HTTP 认证数据)的设置。如果设为 true,表示跨域能发送凭证。

当开启 withCredentials 时,如果服务器没有正确设置 CORS 响应头,浏览器会阻止响应

服务器的设置:

Access-Control-Allow-Origin 设置为你的请求的源(注意,不能是 *,因为 * 和 withCredentials 是不兼容的)
Access-Control-Allow-Credentials 设置为 true

这是网上能搜到的设置,但是还有一点就是

Access-Control-Expose-Headers 是一种响应头,是 CORS (Cross-Origin Resource Sharing) 协议中的一部分。此响应头指定了哪些 HTTP 响应头可以被 XMLHttpRequest 或 Fetch API 在前端JavaScript中访问。

默认情况下,有一些简单的响应头可以被允许,包括 Cache-Control, Content-Language, Content-Type, Expires, Last-Modified, 和 Pragma。如果你想让浏览器有权限访问到其他的响应头信息,就需要在 Access-Control-Expose-Headers 中明确指出这些头的名称。

Access-Control-Expose-Headers 设置为 * 是不被允许的。

不管前端是react还是vue框架,一旦开启withCredentials,Access-Control-Allow-Origin不能是*,同样服务器也要设置Access-Control-Allow-Credentials 设置为 true

posted @ 2024-03-01 23:06  Zxeao  阅读(280)  评论(0编辑  收藏  举报