Docker上的Flask-WTF CSRF标记错误
提交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 Machine,而你的SERVER_NAME
设置为192.168.99.100
(或者默认的Docker Machine IP)。
我注意到,大多数基于webkit的浏览器不会为基于IP的域设置cookie,但它们允许localhost
。
你可以做的一个select是:
-
编辑你的
/etc/hosts
文件,join:192.168.99.100 local.docker
(如果不同,用你的Docker Machine IP地址replace这个IP)。 -
将您的
SERVER_NAME
更改为使用local.docker
。
如果你想看到这个完整的写作,我一会儿在https://nickjanetakis.com/blog/fix-missing-csrf-token-issues-with-flask博客。