提交Flask-WTF表单后,我看到错误“会话令牌丢失”或“CSRF令牌不匹配”。只有在使用Docker-compose的Docker上运行时才会出现错误,即当我正常运行Flask应用程序时没有CSRF错误。我正在使用Flask-WTF 0.14.2,Docker 17.03.1-ce,Docker-compose 1.13.0-rc1
答案 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回顾了一段时间。