【问题标题】:Flask-WTF CSRF token error when on Docker在 Docker 上时 Flask-WTF CSRF 令牌错误
【发布时间】:2017-09-27 00:42:43
【问题描述】:

提交 Flask-WTF 表单后,我看到错误“会话令牌丢失”或“CSRF 令牌不匹配”。错误仅在使用 Docker-compose 在 Docker 上运行时发生,即当我正常运行 Flask 应用程序时没有 CSRF 错误。我正在使用 Flask-WTF 0.14.2、Docker 17.03.1-ce、Docker-compose 1.13.0-rc1

【问题讨论】:

    标签: docker flask csrf flask-wtforms


    【解决方案1】:

    这可能是因为您使用的是 Docker 机器,并且您的 SERVER_NAME 设置为 192.168.99.100(或您的默认 Docker 机器 IP)。

    我注意到大多数基于 webkit 的浏览器不会为基于 IP 的域设置 cookie,但它们允许localhost

    你可以做的一个选择是:

    • 编辑您的 /etc/hosts 文件,添加:192.168.99.100 local.docker(如果该 IP 不同,则将该 IP 替换为您的 Docker 机器 IP 地址)。

    • 将您的 SERVER_NAME 更改为使用 local.docker

    如果您想查看有关此的完整文章,我不久前在 https://nickjanetakis.com/blog/fix-missing-csrf-token-issues-with-flask 写了一篇博客。

    【讨论】:

    • 感谢您的回复。我只使用 docker-compose 构建应用程序,没有 docker-machine。
    • 在 Ubuntu 16.04 上
    猜你喜欢
    • 2017-01-08
    • 2018-03-11
    • 2017-05-24
    • 2020-07-15
    • 2018-07-16
    • 2016-11-08
    • 2022-12-21
    • 1970-01-01
    • 2013-08-28
    相关资源
    最近更新 更多