【问题标题】:Third party cookies not set on Chrome (Django App)Chrome 上未设置第三方 cookie(Django 应用程序)
【发布时间】:2020-07-14 15:09:22
【问题描述】:

我在访问 Chrome 上的某些第三方 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

没有运气。

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

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

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

【问题讨论】:

    标签: django google-chrome cookies session-cookies samesite


    【解决方案1】:

    好的,找到了解决方案!

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

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

    =>

    SESSION_COOKIE_SECURE = True
    SESSION_COOKIE_SAMESITE = None
    CSRF_COOKIE_SAMESITE = None
    

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

    【讨论】:

    • 这是截至 8 月 11 日在 Django 2.2 上的正确解决方案。
    • 对于 Django 3.1,根据the docs 应该有引号: SESSION_COOKIE_SAMESITE = 'None' CSRF_COOKIE_SAMESITE = 'None'
    猜你喜欢
    • 2011-12-15
    • 2019-10-11
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 2021-02-08
    • 1970-01-01
    相关资源
    最近更新 更多