使用flask提示The CSRF token is missing
发布日期:2021-05-14 01:21:51 浏览次数:17 分类:精选文章

本文共 637 字,大约阅读时间需要 2 分钟。

在Flask编写的Web程序中,若在提交表单时出现以下错误(通常类似截图所示),可能是由于CSRF保护机制未正确配置导致。

现象

尝试提交表单时,可能会看到如下的错误提示:

![此处应放置示例截图]

原因

沟通过Flask-WTF模块的默认设置,所有视图都会启用CSRF保护。如果模板中包含表单,但没有正确添加CSRF令牌,系统将判定请求为跨站请求伪造攻击,阻止数据提交。

解决办法

方法1:在模板中添加CSRF令牌

在使用表单的模板中,局部放置以下标记:

{{ csrf_token() }}

这样可以为每个表单生成独特的CSRF令牌,确保数据提交安全性。

方法2:通过exempt装饰器分配保护

对于不需CSRF保护的路由或函数,可以使用csrf.exempt装饰器:

from flask_wtf.csrf import CSRFProtect
protect = CSRFProtect()
@protect.exempt
def my_function():
pass

仅适用于不处理敏感操作的非表单视图。

方法3:禁用默认CSRF保护

设置WTF_CSRF_CHECK_DEFAULTFalse,即:

WTF_CSRF_CHECK_DEFAULT = False

此方法会影响所有表单,适用于已全面控制CSRF的应用程序。

注意事项

  • 确保所有修改在正确位置进行,避免因配置错误导致CSRF验证失效。
  • 在开发初期,尽量开启CSRF保护以保障安全。
上一篇:python如何给图片添加文字水印?
下一篇:如何去除QTableWidget表格选中Item时的虚线框?

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年04月09日 14时11分15秒