Я использую значения по умолчанию 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 сеанса после ответа.
Я нашел решение, используя информацию из этот ответ.
Вы можете создать данные 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