Masonite框架启动报错:Invalid CSRF Token问题求助
Masonite项目启动后"Invalid CSRF Token"错误排查与解决
确认表单CSRF字段渲染正确
模板里必须用Masonite内置的{% csrf_field %}标签生成CSRF令牌字段,不能手动硬编码。示例:<form method="POST"> {% csrf_field %} <!-- 其他表单内容 --> </form>检查路由的CSRF豁免设置
若为API或无需CSRF验证的路由,要给路由添加CSRF豁免中间件:from masonite.routes import Route Route.post('/api/webhook', 'WebhookController@store').middleware(['csrf.exempt'])注意:GET请求默认不需要CSRF验证,仅POST/PUT/DELETE等修改类请求需要验证。
验证会话与Cookie配置
- 检查
.env文件的SESSION_DRIVER,本地开发推荐用cookie或file驱动,确保驱动正常工作 - 确认
APP_URL设置正确,本地开发一般为http://localhost:8000,URL不匹配会导致Cookie域名验证失败,无法读取CSRF令牌
- 检查
清除浏览器缓存与Cookie
旧缓存的Cookie可能导致令牌不匹配,直接清除当前域名的Cookie,或用隐私窗口测试页面检查中间件加载顺序
CSRF中间件依赖会话,所以CsrfMiddleware必须在SessionMiddleware之后加载。查看config/middleware.py的全局中间件顺序:MIDDLEWARE = [ # 其他中间件 'masonite.middleware.SessionMiddleware', 'masonite.middleware.CsrfMiddleware', # 其他中间件 ]自定义请求的令牌处理
用Postman等工具调用接口时,需从页面源码或XSRF-TOKENCookie中获取令牌,然后在请求头添加X-XSRF-TOKEN字段,值为获取到的令牌内容
内容的提问来源于stack exchange,提问作者Abhishek Bavoria
相关产品推荐
相关产品推荐

