从站点 a 请求 b 域名的接口,带不上 cookie,前后端均已经设置了携带 cookie
- 前端(axios 设置
withCredentials
) - 后端(设置
Access-Control-Allow-Credentials
)
但是从 c 站点,或者本地 localhost 发起请求却可以带上 cookie
求指导是遗漏了哪里的配置
从站点 a 请求 b 域名的接口,带不上 cookie,前后端均已经设置了携带 cookie
withCredentials
)Access-Control-Allow-Credentials
)但是从 c 站点,或者本地 localhost 发起请求却可以带上 cookie
求指导是遗漏了哪里的配置
如果你用的是nginx,可以这么做:
location / {
...
# 确保转发 Cookie
proxy_set_header Cookie $http_cookie;
}
axios.get('https://example.com/api', { withCredentials: true });
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://your-frontend-domain.com
SameSite 属性应设置为 None,并且需要同时设置 Secure 属性。例如:
Set-Cookie: CookieName=CookieValue; SameSite=None; Secure;
如果要做ngnix代理, 千万记得不要开启前端的{ withCredentials: true }, 删除它, 只配置服务器的ngnix即可!!! 前端配置这个withCredentials会导致永远不成功!
8 回答5.8k 阅读✓ 已解决
9 回答9.2k 阅读
6 回答4.7k 阅读✓ 已解决
3 回答10.3k 阅读✓ 已解决
4 回答7.2k 阅读
5 回答7.1k 阅读✓ 已解决
5 回答8.2k 阅读
好像缺一步后端设置
Access-Control-Allow-Origin
为特定的域名