CSRF_COOKIE_SAMESITE 相当于 django 1.6.5

CSRF_COOKIE_SAMESITE equivalent for django 1.6.5

我正在尝试在 salesforce webtab iframe 中启动使用 django 1.6.5 版本编写的应用程序。我在尝试登录时遇到“CSRF cookie not set”错误。我通过控制台日志了解到,在最新版本的 Chrome 中,只允许使用 'secure'=True 和 samesite=None 设置的 cookie。我了解到这些设置可以添加到更高版本的 django

中的 settings.py
SESSION_COOKIE_SAMESITE = 'None'
CSRF_COOKIE_SAMESITE = 'None'
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

但这在django 1.6.5 版本中不起作用。我一直在尝试找出如何在我的版本中应用这些设置。

在 Django 1.6.5 中不支持添加 samesite 设置,这就是在 settings.py 中添加这些设置无效的原因。 Django 3.1 是他们开始支持此设置的地方。我尝试添加自己的中间件并将设置添加到 cookie 中,但出现了无效字段错误。然后我找到了一个可以用于此目的的库 - django-cookies-samesite。我能够将 samesite 设置应用到 None 并将安全应用到 True,然后我能够通过 salesforce web 选项卡登录。

  1. 将这些添加到 settings.py
SESSION_COOKIE_SAMESITE = 'None'
SESSION_COOKIE_SAMESITE_FORCE_ALL = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
  1. 并在 MIDDLEWARE_CLASSES 中添加:
'django_cookies_samesite.middleware.CookiesSameSite',

我从中获取信息的相关网站:

https://github.com/django/django/pull/8380/files

https://pypi.org/project/django-cookies-samesite/