当前正在尝试解决此问题,我浏览了许多帖子,但仍然无法解决此问题,因此此消息发送给社区:)
我正在为基于Flask的网站创建一个开发/测试环境,我必须将当前网站复制到一个子域中,例如从mydomain.com
到dev.mydomain.com
,以此类推,以获取其他相关服务,例如弹性搜索(例如从es.mydomain.com
到es-dev.mydomain.com
)。
所以我在这里,我通过Nginx,主网站dev.mydomain.com
部署了所有内容,并且所有服务都在运行并且可以访问。但是,我实际上无法登录到Flask时,当实际上有2个会话令牌时会抛出错误400 missing CSRF session token
...似乎由于cookie包含2个session
键,因此在表单提交过程中创建了1个重复项。
提交表单之前
_ga=...
; _gid=...
; session=...
session=...
; Domain=.dev.mydomain.com
; Secure
; HttpOnly
; Path=/
提交表单后
_ga=...
; _gid=...
; session=...
_ga=...
; _gid=...
; session=...
; session=...
通过csrf.init_app(app)
为整个应用启用了CSRF,并且我的Flask配置为:
SECRET_KEY = os.getenv("SECRET_KEY")
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_HTTPONLY = True
REMEMBER_COOKIE_SECURE = True
REMEMBER_COOKIE_HTTPONLY = True
我正在尝试不同的配置风格,但到目前为止没有任何改进...
将一如既往地提供一些帮助,在此先感谢您:)
为了记录,只需要设置SESSION_COOKIE_NAME
配置参数即可解决该问题
cf。 https://flask.palletsprojects.com/en/1.1.x/config/#SESSION_COOKIE_NAME