浏览器不保存 cookie,但存在 Set-Cookie 标头

问题描述 投票:0回答:1

我正在使用 React 前端和 Django 后端,并且已经在身份验证方面苦苦挣扎了好几天。我已经将我遇到的问题归结为浏览器未设置从后端接收的 cookie。

在检查时,我可以验证响应中是否存在 Set-Cookie 标头。但它们没有出现在存储中...(cookie 是 csrf 令牌和会话 id)。依赖于这些 cookie 的其他功能(例如注销)会失败。但是,当使用 Django Rest 框架接口(连接到后端 url,例如 localhost:8000/users/login/)时,我可以执行登录,然后 cookie 就会出现在存储中。

我已经尝试了 fetch 和 axios,我分别包含了凭据:'include' 和 withCredentials: true。

最后一点,当使用 fetch 时,我会获取响应

fetch(url, { ... })
.then(res => console.log(res.headers.get('Set-Cookie')))

当打印 null 时,当循环所有存在的标头时,我只看到两个(如应用程序 json)。

一些截图供参考。

这些是所有存在的 cookie,我期待看到 csrftoken 和 session。

下图显示了标头,有两个 Set-Cookie 标头,其中包含 sessionid 和 csrftoken。

最后是响应中的cookies

我已经在 Django 中启用了 cors 设置,我尝试了 cookie 的所有 SAMESITE 和 HTTPONLY 设置,我也尝试了不同的 cors 设置,但没有任何效果。

django cookies header fetch
1个回答
0
投票

要让浏览器接受 samesite=none 的 cookie,那么它们还必须设置 secure 属性,并且您必须使用 HTTPS

喜欢

Set-Cookie:SessionCookie=xxxxxxxxxx; SameSite=None; Secure;
© www.soinside.com 2019 - 2024. All rights reserved.