Отключите HttpOnly для сеанса Flask только для одного обработчика - PullRequest
0 голосов
/ 28 мая 2019

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

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

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

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

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

но cookie все еще был установлен только для HTTP. Похоже, что Flask добавляет сессионный cookie после ответа.

1 Ответ

0 голосов
/ 09 июня 2019

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

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