Отключить HttpOnly для сеанса Flask только для одного обработчика

Я использую значения по умолчанию Flask, поэтому HttpOnly устанавливается для файла cookie сеанса.

У меня есть один обработчик, для которого я хотел бы разрешить JavaScript доступ к файлу cookie сеанса.

Есть ли способ изменить файл cookie сеанса Flask для одного обработчика, чтобы HttpOnly был ложным?

Я попробовал это в своем обработчике:

app.config['SESSION_COOKIE_HTTPONLY'] = False
rsp = make_response(jsonify(...))
app.config['SESSION_COOKIE_HTTPONLY'] = True
return rsp

но файл cookie по-прежнему был установлен HTTPONLY. Похоже, что Flask добавляет файл cookie сеанса после ответа.


person gaefan    schedule 28.05.2019    source источник


Ответы (1)


Я нашел решение, используя информацию из этого ответа.

Вы можете создать данные 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
person gaefan    schedule 09.06.2019