Flask-WTF CSRFProtect提供“400缺少CSRF令牌”错误

时间:2017-01-10 02:57:35

标签: python flask flask-wtforms

我正在尝试使用Flask-WTF的CSRFProtect扩展名添加CSRF令牌保护。除了CSRF保护之外,该应用程序不使用WTForms。

我跟着the docs但是我得到“400 Bad Request缺少CSRF令牌”。

from flask_wtf.csrf import CSRFProtect
csrf = CSRFProtect(app)

我将以下内容放在模板中(带有表单或没有表单),但我得到了同样的错误。

<form method="post">
    <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
</form>

1 个答案:

答案 0 :(得分:0)

this answer所述,检查实际的CSFR验证流程:

  

您可以在中调试验证   flask_wtf/csrf.py函数中的validate_csrf()文件。

对我来说,问题是由最近更新 Flask Flask-WTF 引起的。我通过删除项目中的所有.pyc文件解决了这个问题。但是,我不知道我的实际根本原因。

find . -name '*.pyc' -delete

稍后编辑:

  • 更新至最新版本的Flask,Flask-WTF;
  • 在您的开发环境中,如果使用HTTP而不是HTTPS,请确保SESSION_COOKIE_SECURE未设置为True。见this