Flask提示CSRF token missing 按文档配置仍报错问题求助
核心问题:配置加载顺序错误
CSRFProtect 初始化阶段需要读取 SECRET_KEY 生成会话侧的校验令牌,你当前代码先初始化 CSRF 防护、后设置密钥的逻辑,会导致 CSRF 组件初始化时无法获取有效密钥,会话中不会存储正确的 CSRF 令牌,因此前端生成的令牌无法通过后端校验。
修正后的服务端代码如下:
from flask import Flask, render_template, request from flask_wtf.csrf import CSRFProtect app = Flask(__name__) # 先配置SECRET_KEY app.config["SECRET_KEY"] = 'secret' # 再初始化CSRF防护组件 csrf = CSRFProtect(app) @app.route("/reserve", methods=["GET", "POST"]) def reserve(): if request.method == "GET": # 修正原代码多写的多余右括号问题 return render_template("reserve.html") # 此处补充POST请求的业务处理逻辑即可
其他注意事项
- 原HTML表单中的文本输入框未设置
name属性,若后续需要读取提交的姓名参数,可修改为<input type="text" name="username" placeholder="Name"> - 若调整配置顺序后仍报错,检查浏览器是否禁用了站点Cookie,Flask的会话依赖Cookie存储CSRF校验基准值,禁用Cookie会导致会话侧令牌丢失。
内容的提问来源于stack exchange,提问作者Shelef tavor
相关产品推荐
相关产品推荐

