【问题标题】:Flask-WTF CSRFProtect gives "400 The CSRF Token is missing" errorFlask-WTF CSRFProtect 给出“400 CSRF 令牌丢失”错误
【发布时间】:2017-05-24 10:41:49
【问题描述】:

我正在尝试使用 Flask-WTF 的 CSRFProtect 扩展添加 CSRF 令牌保护。除此 CSRF 保护外,该应用未使用 WTForms。

我关注了the docs,但我收到“400 Bad Request The CSRF token is missing”。

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

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

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

【问题讨论】:

    标签: python flask flask-wtforms


    【解决方案1】:

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

    您可以在 flask_wtf/csrf.py 文件,在validate_csrf() 函数中。

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

    find . -name '*.pyc' -delete
    

     

    后期编辑:

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

    【讨论】:

    • omfg 谢谢!必须关闭 HTTP 上的 SESSION_COOKIE_SECURE
    猜你喜欢
    • 2018-03-11
    • 2020-07-15
    • 2017-09-27
    • 1970-01-01
    • 2017-01-08
    • 2021-11-23
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    相关资源
    最近更新 更多