【问题标题】:Flask WTF error - CSRF session token is missing (but actually not)Flask WTF 错误 - CSRF 会话令牌丢失(但实际上没有)
【发布时间】:2020-07-15 12:20:07
【问题描述】:

目前正在尝试解决此问题,我浏览了许多帖子但仍然无法解决此问题,因此向社区发送此消息:)

我正在为基于 Flask 的网站创建开发/测试环境,我必须将当前网站复制到子域中,例如从 mydomain.comdev.mydomain.com 等以获取其他相关服务,例如弹性搜索(例如从es.mydomain.comes-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


    【解决方案1】:

    记录一下,只需设置SESSION_COOKIE_NAME配置参数即可解决该问题

    参照。 https://flask.palletsprojects.com/en/1.1.x/config/#SESSION_COOKIE_NAME

    【讨论】:

      猜你喜欢
      • 2018-03-11
      • 2017-05-24
      • 2017-09-27
      • 1970-01-01
      • 2017-01-08
      • 2021-04-07
      • 2021-11-23
      • 1970-01-01
      • 2020-02-10
      相关资源
      最近更新 更多