【发布时间】:2020-07-15 12:20:07
【问题描述】:
目前正在尝试解决此问题,我浏览了许多帖子但仍然无法解决此问题,因此向社区发送此消息:)
我正在为基于 Flask 的网站创建开发/测试环境,我必须将当前网站复制到子域中,例如从 mydomain.com 到 dev.mydomain.com 等以获取其他相关服务,例如弹性搜索(例如从es.mydomain.com 到es-dev.mydomain.com)。
所以我在这里,我通过 Nginx 部署了所有东西,主网站 dev.mydomain.com 并且所有服务都运行并且可以访问。但是当实际上有 2 个会话令牌时,我无法登录到 Flask,这会引发错误 400 missing CSRF session token ......似乎在表单提交过程中创建了 1 个重复项,因为 cookie 包含 2 个 session 键。
提交表单之前
- 原始cookie键:
_ga=...;_gid=...;session=... - 开发 cookie 键:
session=...;Domain=.dev.mydomain.com;Secure;HttpOnly;Path=/
表单提交后
- 原网站cookie键:
_ga=...;_gid=...;session=... - 开发网站 cookie 键:
_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
我正在尝试不同的配置风格,但到目前为止没有任何改进......
我们将一如既往地感谢您的帮助,在此先感谢您:)
【问题讨论】:
标签: python session flask token csrf