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

CSRF验证失败请求中止,线上服务器问题排查求助

CSRF验证失败问题排查与解决

问题背景

生产服务器部署完成后,后台管理功能原本运行正常,清理浏览器Cookie后突然出现「CSRF verification failed. Request aborted」错误,网站当前使用HTTP协议,未配置SSL。

错误截图:
错误截图

表单已正确添加csrf_token:
表单截图

相关配置代码

DEBUG = False
   
CSRF_TRUSTED_ORIGINS = ['http://.*', 'http://example.com', 'http://www.example.com']

# HTTPS Settings
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = False
SECURE_SSL_REDIRECT = False

# HSTS Settings
SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_PRELOAD = True
SECURE_HSTS_INCLUDE_SUBDOMAINS = True

问题分析与解决方案

  • SESSION_COOKIE_SECURE配置冲突
    当前使用HTTP协议,但SESSION_COOKIE_SECURE = True会让浏览器仅在HTTPS连接下发送Session Cookie。清理Cookie后,浏览器无法在HTTP环境下保存新的Session Cookie,导致CSRF验证依赖的会话上下文丢失。
    解决:将SESSION_COOKIE_SECURE改为False,适配HTTP环境。

  • CSRF_TRUSTED_ORIGINS格式问题
    http://.*这种写法不符合Django的格式要求,Django需要完整的域名或带端口的地址(如果非80端口),不支持这种任意HTTP域名的通配符写法。
    解决:替换为实际的域名,比如['http://example.com', 'http://www.example.com'];如果有其他子域名,可使用http://*.example.com(仅匹配该域名下的所有子域名)。

  • HSTS配置不适配HTTP环境
    SECURE_HSTS_PRELOAD = True和SECURE_HSTS_SECONDS配置会强制浏览器后续仅用HTTPS访问站点,但网站当前使用HTTP,这会导致浏览器缓存强制HTTPS规则,引发Cookie传输异常。
    解决:暂时注释或关闭所有HSTS相关配置,待配置SSL后再启用。

验证步骤

  1. 修改配置后重启服务
  2. 清理浏览器Cookie和缓存
  3. 重新访问后台页面提交表单,验证CSRF错误是否消失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:30:48