仅对一个处理程序关闭 HttpOnly for Flask Session
Turn off HttpOnly for Flask Session for only one handler
我正在使用 Flask 默认设置,以便为会话 cookie 设置 HttpOnly。
我有一个处理程序,我想允许 JavaScript 访问会话 cookie。
有没有办法更改单个处理程序的 Flask 会话 cookie,以便 HttpOnly 为 false?
我在我的处理程序中试过这个:
app.config['SESSION_COOKIE_HTTPONLY'] = False
rsp = make_response(jsonify(...))
app.config['SESSION_COOKIE_HTTPONLY'] = True
return rsp
但是 cookie 仍然设置了 HTTPONLY。看起来 Flask 在做出响应后添加了会话 cookie。
我使用来自 的信息找到了解决方案。
您可以像这样创建会话 cookie 数据:
from flask.sessions import SecureCookieSessionInterface
session_serializer = SecureCookieSessionInterface().get_signing_serializer(app)
session_clone = dict(foo='bar')
session_cookie_data = session_serializer.dumps(session_clone)
然后您可以使用名称 session 创建您自己的 cookie:
resp = make_response()
resp.set_cookie('session', session_cookie_data)
return resp
我正在使用 Flask 默认设置,以便为会话 cookie 设置 HttpOnly。
我有一个处理程序,我想允许 JavaScript 访问会话 cookie。
有没有办法更改单个处理程序的 Flask 会话 cookie,以便 HttpOnly 为 false?
我在我的处理程序中试过这个:
app.config['SESSION_COOKIE_HTTPONLY'] = False
rsp = make_response(jsonify(...))
app.config['SESSION_COOKIE_HTTPONLY'] = True
return rsp
但是 cookie 仍然设置了 HTTPONLY。看起来 Flask 在做出响应后添加了会话 cookie。
我使用来自
您可以像这样创建会话 cookie 数据:
from flask.sessions import SecureCookieSessionInterface
session_serializer = SecureCookieSessionInterface().get_signing_serializer(app)
session_clone = dict(foo='bar')
session_cookie_data = session_serializer.dumps(session_clone)
然后您可以使用名称 session 创建您自己的 cookie:
resp = make_response()
resp.set_cookie('session', session_cookie_data)
return resp