349989153 / 349989153.github.io

My personal blog.
0 stars 0 forks source link

设置了credentials: 'include'但是依然无法带cookie给服务器 #15

Open 349989153 opened 3 years ago

349989153 commented 3 years ago

有可能是因为SameSite策略导致。

前端域名在a.com,访问b.com的接口,前端的fetch请求设置了credentials: 'include',尽管服务器的response带着Set-Cookie,但是前端发请求的时候,并没有将cookie带给服务器端。这是因为在chrome上默认是SameSite=Lax,也就是不允许非同站传递cookie(非同站,指前端与服务器域名不同).

349989153 commented 3 years ago

解决方法(二选一): 一、手动关闭Chrome的SameSite限制

谷歌浏览器地址栏输入:chrome://flags/ 找到:SameSite by default cookies、Cookies without SameSite must be secure 设置上面这两项设置成 Disable

二、Cookie设置

报文里面set-cookie,添加SameSite=None; Secure=true

349989153 commented 3 years ago

https://juejin.im/post/6844904095711494151#heading-14

349989153 commented 3 years ago

这种问题怎么还有兼容性的问题啊,恶心到了

349989153 commented 3 years ago

https://blog.csdn.net/tmyth/article/details/104340403