未在 Chrome 上设置第三方 cookie(Django 应用程序)

Third party cookies not set on Chrome (Django App)

我在 Chrome 上访问某些 third-party cookie 时遇到问题。

Chrome 版本是 80.0.3987.100 (Official Build) (64-bit),我想这已经将 SameSite cookie 的新实现设置为 Lax。

但是,我在 Django 设置中添加了以下内容:

SESSION_COOKIE_SECURE = True
SESSION_COOKIE_SAMESITE = None
CSRF_COOKIE_SAMESITE = None

运气不好。

可以看到上面的请求header中没有Cookies

我已经尝试过在 Postman 上从 Chrome 执行时遇到问题的请求。在我通过 Cookie: sessionid: <some_id> 之前,我得到了完全相同的结果。可能值得一提的是,这一切在 Firefox 上都没有问题(我可以在请求中看到正确设置的 Cookie Headers)。

如果有人有任何想法,我们将不胜感激。

确定找到解决方案!

根据 this PR 上的对话,我决定采用以下解决方法:

  1. 创建 following middleware
  2. django.contrib.sessions.middleware.SessionMiddleware
  3. 之前添加中间件
  4. 仍然保留这些设置。

=>

SESSION_COOKIE_SECURE = True
SESSION_COOKIE_SAMESITE = None
CSRF_COOKIE_SAMESITE = None

上面的 PR 已经合并到 master 中,将在 2020 年 8 月的某个时间发布。在那之前,这是最好的解决方法。