You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django+Vue项目POST请求持续返回403「CSRF token缺失或错误」求解

解决方案

你遇到的CSRF校验失败核心问题出在CSRF_HEADER_NAME的配置格式错误。Django要求自定义CSRF请求头配置必须遵循HTTP_前缀、全大写、横杠转下划线的规则:

  • 你当前配置的CSRF_HEADER_NAME = "X-CSRFToken"是无效写法,Django不会从X-CSRFToken请求头中读取token
  • 直接删除这行配置即可,Django默认的CSRF_HEADER_NAME值为HTTP_X_CSRFTOKEN,会自动匹配前端发送的X-CSRFToken请求头,无需额外自定义。如果要显式声明,正确写法为CSRF_HEADER_NAME = "HTTP_X_CSRFTOKEN"

其他需要校验的排查点

  • 如果你使用Django 4.0及以上版本,必须配置CSRF_TRUSTED_ORIGINS参数,将前端服务的访问地址(例如本地测试的http://127.0.0.1:5173、http://localhost:5173)加入列表,否则即使头信息完全正确也会触发403
  • 跨域部署场景下需要额外配置CSRF_COOKIE_DOMAIN为前后端共用的根域名,保证前端可以正常读取csrftoken Cookie
  • 排查阶段可以临时给POST接口添加@csrf_exempt装饰器,如果添加后接口可以正常访问,即可确认问题完全由CSRF校验导致,排除权限错误、路由不匹配等其他403诱因

调试CSRF校验逻辑的方法

找到你本地Django安装路径下的django/middleware/csrf.py文件,定位到_check_token方法,添加临时打印日志输出Django实际获取到的请求头token、Cookie存储的token以及校验失败的具体原因,排查完成后回滚修改即可。


内容的提问来源于stack exchange,提问作者theberzi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 20:27:02