仅针对一个处理程序关闭HttpOnly for Flask Session

时间:2019-05-28 15:51:27

标签: python flask session-cookies httponly

我使用的是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。

1 个答案:

答案 0 :(得分:0)

我使用this answer中的信息找到了解决方案。

您可以创建会话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)

,然后您可以使用会话名称创建自己的cookie:

resp = make_response()
resp.set_cookie('session', session_cookie_data)
return resp