Почему-то Flask игнорирует опцию конфига SESSION_COOKIE_SAMESITE хотя вроде как должен ее обрабатывать (
ссылка)
$ curl -I http://localhost:5000/
HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 5
Set-Cookie: foo=bar; Secure; HttpOnly; Path=/; SameSite=Strict
Set-Cookie: session=1e70123c-2726-44f7-9e6e-b9e5a083699d; Expires=Wed, 10-Feb-2021 20:04:03 GMT; HttpOnly; Path=/
Server: Werkzeug/1.0.1 Python/3.7.3
Date: Tue, 09 Feb 2021 20:04:03 GMT
Видно, что устанавливаются две куки, одну (foo) я ставлю вручную и любые ее параметры отрабатываются - с ней все OK. Другая (session), ставится Flask'ом игнорируя опцию
SESSION_COOKIE_SAMESITE
почему-то.
Код упростил до минимума:
#!/usr/bin/env python3
from flask import Flask, Response
from flask_session import Session
app = Flask(__name__)
app.config.update(
FLASK_ENV = 'development',
SESSION_TYPE = 'redis',
SESSION_COOKIE_SAMESITE = "Strict",
PERMANENT_SESSION_LIFETIME = 86400,
)
sess = Session()
sess.init_app(app)
@app.route('/')
def index():
response = Response('hello')
response.set_cookie('foo', 'bar', secure=True, httponly=True, samesite='Strict')
return response
Если играть с другими параметрами (установить
SESSION_COOKIE_SECURE
или увеличить
PERMANENT_SESSION_LIFETIME
) - то их изменения отражаются на куке, а
SESSION_COOKIE_SAMESITE
просто игнорируется почему-то. В redis куки создаются. Даже если изменить
SESSION_TYPE = 'filesystem'
- куки отправляются, но по прежнему без samesite.
Что я делаю не так? Как можно обойти это и выставить атрибут samesite для куки session?
Модули (virtualenv):
cachelib==0.1.1
click==7.1.2
Flask==1.1.2
Flask-Session==0.3.2
itsdangerous==1.1.0
Jinja2==2.11.3
MarkupSafe==1.1.1
pkg-resources==0.0.0
redis==3.5.3
Werkzeug==1.0.1