我试图为版本2.2.x
上的Django项目设置一个特定cookie,使其具有samesite='None'。我继续得到下面的错误
raise ValueError('samesite must be "lax" or "strict".')
我可以从venv/lib/python3.9/site-packages/django/http/response.py
中看到
if samesite:
if samesite.lower() not in ('lax', 'strict'):
raise ValueError('samesite must be "lax" or "strict".')
self.cookies[key]['samesite'] = samesite
我已尝试以下方法:
CSRF_COOKIE_SAMESITE = 'None'
,SESSION_COOKIE_SAMESITE = 'None'
set_cookie(name, value=value, secure=True, samesite='None')
在需要它的cookie上设置此选项这两种方法都不起作用。我还尝试安装了包^{
# example
MIDDLEWARE = (
"django_cookies_samesite.middleware.CookiesSameSite",
# other middleware
)
当我将值设置为None
而不是'None'
时,不会添加任何值,我相信当没有值时,Chrome会返回到lax
我还尝试过在Djangoset_cookie
之外设置cookie,但没有任何运气:
# this fails with AttributeError: 'JsonResponse' object has no attribute 'COOKIES'
response["Set-Cookie"] = f"{name}={value}; Secure={False}; SameSite='None'; Path=/"
# this adds the cookie however doesn't parse it correctly so it fails
response.cookies[name] = f"{name}={value}; Secure={False}; SameSite='None'; Path=/"
# eg
Set-Cookie: my_name="my_value Secure=False\073 SameSite='None'\073 Path=/"
# where the other cookies look like
Set-Cookie: my_name=my_value; expires=Wed, 28 Apr 2021 02:51:02 GMT; Max-Age=2592000; Path=/
有办法解决这个问题吗?我可以看到较新版本的Django支持这一点,但我试图看看是否有办法解决当前版本的Django(2.2
)
目前没有回答
相关问题 更多 >
编程相关推荐