Django-检查Cookie的“ SameSite”属性

时间:2020-08-25 09:54:57

标签: python-3.x django cookies

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

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

cookiesid = request.COOKIES["cookiesid"]

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

如何检查?

我正在使用Python 3.6.9和Django 3.1

2 个答案:

答案 0 :(得分:2)

我最近也遇到了跨域Cookie的问题,并且一直跟踪到Google Chrome浏览器逐步推出其安全更新,从而强制将 SameSite 属性设置为 Lax (如果未设置)

松驰表示默认情况下,将在Google Chrome浏览器中跨域阻止Cookie

鉴于您正在检查代码中的Cookie属性,我认为如果 SameSite 属性不存在,则表示您未设置该属性,并且因此Google Chrome浏览器将属性强制为 Lax

正如您所声明的,您正在使用Django 3.1, settings.py 文件中的以下四个条目可能会解决您的问题(对我而言):

  • CSRF_COOKIE_SECURE = True
  • SESSION_COOKIE_SECURE = True
  • CSRF_COOKIE_SAMESITE ='无'
  • SESSION_COOKIE_SAMESITE ='无'

祝你好运!

答案 1 :(得分:2)

再深入一点。

  1. 在生产集:

    CSRF_COOKIE_SECURE = 真

    SESSION_COOKIE_SECURE = 真

    CSRF_COOKIE_SAMESITE = '无'

    SESSION_COOKIE_SAMESITE = '无'

  2. 请勿在开发中设置上述任何标志。如果连接不安全,它会说不能使用 SameSite=None 设置 cookie。

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