我正在使用CherryPy编程软件。我正在使用“ cherrypy.session”正常会话。 现在,我注意到Firefox抱怨我使用的是“错误的” samesite-Attribute,并且将来可能不再可用。
是否可以将CherryPy的会话cookie的samesite-Attribute设置为另一个值?
答案 0 :(得分:1)
这已经有些技巧了(例如,看起来here) 这意味着显然没有针对python <3.8的解决方案。 但是,您仍然可以使用Monkeypatch。 因此,请执行以下操作来解决该问题:
打开../ python3.x / site-packages / cherrypy / _cprequest.py
在文件开头添加以下代码
from http import cookies
cookies.Morsel._reserved.setdefault('samesite', 'SameSite')
关闭并保存
打开../ python3.x / site-packages / cherrypy / lib / sessions.py
更改以下函数定义
def init(storage_type=None, path=None, path_header=None, name='session_id',
timeout=60, domain=None, secure=False, clean_freq=5,
persistent=True, httponly=False, debug=False,
# Py27 compat
# *, storage_class=RamSession,
**kwargs):
到
def init(storage_type=None, path=None, path_header=None,
name='session_id',
timeout=60, domain=None, secure=False, clean_freq=5,
persistent=True, httponly=False,samesite='lax' debug=False,
# Py27 compat
# *, storage_class=RamSession,
**kwargs):
更改以下内容:
set_response_cookie(path=path, path_header=path_header, name=name,
timeout=cookie_timeout, domain=domain, secure=secure,
httponly=httponly)
收件人:
set_response_cookie(path=path, path_header=path_header, name=name,
timeout=cookie_timeout, domain=domain, secure=secure,
httponly=httponly,samesite=samesite)
更改以下内容:
def set_response_cookie(path=None, path_header=None, name='session_id',
timeout=60, domain=None, secure=False, httponly=False):
收件人:
def set_response_cookie(path=None, path_header=None, name='session_id',
timeout=60, domain=None, secure=False, httponly=False,samesite='lax'):
将此代码添加到set_response_cookie()方法的末尾:
if samesite in ['lax', 'strict', None]:
cookie[name]['samesite'] = str(samesite)
保存文件并关闭它。
现在,在代码(驱动程序)中,您可以使用“ samesite”属性,如下所示:
'tools.sessions.samesite': 'strict'
或
'tools.sessions.samesite': 'lax' # This is the default value
祝你好运!