仅对一个处理程序关闭 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