在Docker上时Flask-WTF CSRF令牌错误

时间:2017-04-28 19:52:14

标签: docker flask csrf flask-wtforms

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

1 个答案:

答案 0 :(得分:1)

这可能是因为你使用的是Docker Machine,而你的SERVER_NAME设置为192.168.99.100(或者你的默认Docker Machine IP是什么)。

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

您可以做的一个选择是:

  • 通过添加以下内容编辑/etc/hosts文件:192.168.99.100 local.docker(如果不同,请用您的Docker Machine IP地址替换该IP地址。)

  • SERVER_NAME更改为使用local.docker

如果你想看到关于这一点的完整记录,我在https://nickjanetakis.com/blog/fix-missing-csrf-token-issues-with-flask回顾了一段时间。