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

Django中CSRF令牌验证异常问题排查(登录场景)

Django登录CSRF令牌验证失败的常见排查方向

登录页面CSRF验证失败截图

  • 模板令牌渲染错误
    确认登录表单内部必须包含{% csrf_token %}标签,且标签处于<form>标签范围内。如果是AJAX提交登录请求,需手动在请求头中添加X-CSRFToken字段,值从浏览器的csrftoken Cookie中获取。

  • CSRF Cookie异常
    打开浏览器开发者工具的Application面板,检查是否存在csrftoken Cookie:

    • 若不存在,排查视图是否用render函数渲染模板(Django 1.8+版本render默认携带RequestContext,手动用HttpResponse渲染会丢失上下文导致Cookie无法生成);
    • 若存在但请求未携带,检查Cookie的Domain、Secure、HttpOnly配置是否与当前域名、访问协议匹配,避免浏览器拦截Cookie。
  • 请求格式不兼容
    Django CSRF防护仅对POST/PUT/DELETE等修改类请求生效,且要求请求Content-Type为application/x-www-form-urlencoded、multipart/form-data或application/json:

    • 使用JSON格式提交时,必须在请求头中携带X-CSRFToken;
    • 自定义Content-Type会导致Django跳过CSRF验证逻辑,或直接触发验证失败。
  • 令牌不匹配/失效
    对比页面源码中csrfmiddlewaretoken的值与Cookie中csrftoken的值:

    • 若不一致,检查模板渲染时是否正确传递了上下文;
    • 若服务器settings.py中的SECRET_KEY被修改,之前生成的所有CSRF令牌都会直接失效。
  • 中间件配置问题
    确认settings.py的MIDDLEWARE列表中包含django.middleware.csrf.CsrfViewMiddleware,且顺序必须在django.contrib.sessions.middleware.SessionMiddleware之后,其他业务中间件之前。

  • 视图装饰器冲突
    检查登录视图是否误加了@csrf_exempt装饰器(该装饰器会直接跳过CSRF验证),类视图需确保装饰器正确作用于dispatch方法而非单个请求方法。

内容的提问来源于stack exchange,提问作者Gouri krishna s

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 03:15:03