【问题标题】:Django - check cookies's "SameSite" attributeDjango - 检查 cookie 的“SameSite”属性
【发布时间】:2020-12-13 23:55:32
【问题描述】:

在我的 Django 应用程序中,我想检查特定 cookie 是否具有“SameSite=None”。

我正在使用此代码来读取 cookie 的值,

cookiesid = request.COOKIES["cookiesid"]

但是,我不知道如何检查“SameSite”属性,似乎没有办法通过 request.COOKIES[""]

如何查看?

我正在使用 Python 3.6.9 和 Django 3.1

【问题讨论】:

    标签: python-3.x django cookies


    【解决方案1】:

    我最近也遇到了跨域 Cookie 的问题,我发现它是由于 Google Chrome 逐渐推出了他们的安全更新,该更新将 SameSite 属性强制设为 Lax 如果没有设置

    Lax表示谷歌浏览器默认跨域拦截Cookie

    鉴于您正在检查代码中的 Cookie 属性,我认为如果 SameSite 属性不存在,那么您没有设置它并且因此 Google Chrome 将属性强制设置为 Lax

    正如您所说,您使用的是 Django 3.1,settings.py 文件中的以下四个条目可能会解决您的问题(就像对我一样):

    CSRF_COOKIE_SECURE = True
    SESSION_COOKIE_SECURE = True
    CSRF_COOKIE_SAMESITE = 'None'
    SESSION_COOKIE_SAMESITE = 'None'
    

    祝你好运!

    【解决方案2】:

    再深入一点。

    1. 在生产集中:
    CSRF_COOKIE_SECURE = True
    SESSION_COOKIE_SECURE = True
    CSRF_COOKIE_SAMESITE = 'None'
    SESSION_COOKIE_SAMESITE = 'None'
    
    1. 不要在开发中设置上述任何标志。如果连接不安全,它会说无法使用 SameSite=None 设置 cookie。

    还要确保你有 Django 3,在 Django 2 中有一个错误,它会输出一个 ValueError。

    【讨论】:

      猜你喜欢
      • 2020-12-15
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      • 2020-07-04
      • 2020-07-13
      • 2021-01-11
      • 1970-01-01
      • 2019-11-21
      相关资源
      最近更新 更多