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

部署在Railway的Django应用出现CSRF Token问题:验证失败请求中止

解决Django CSRF验证失败问题

针对你遇到的CSRF verification failed. Request aborted.错误,结合本地正常、部署后异常的情况,可尝试以下排查和修复步骤:

  • 修正CSRF_TRUSTED_ORIGINS配置:确保配置包含完整的协议(http/https)和域名,格式类似:

    CSRF_TRUSTED_ORIGINS = ["https://your-production-domain.com"]
    

    如果站点使用非标准端口,也要一并加上,比如["https://your-domain.com:8443"]。

  • 检查表单/请求的CSRF令牌携带:

    • 表单提交场景:确保模板里添加了{% csrf_token %}标签,放在<form>标签内部。
    • AJAX请求场景:在请求头中加入X-CSRFToken字段,值从浏览器的csrftoken Cookie中获取。
  • 验证ALLOWED_HOSTS配置:确认部署环境的域名已加入该列表,例如:

    ALLOWED_HOSTS = ["your-production-domain.com", "www.your-production-domain.com"]
    
  • 配置HTTPS环境下的Cookie参数:如果部署在HTTPS环境中,需设置:

    CSRF_COOKIE_SECURE = True
    SESSION_COOKIE_SECURE = True
    CSRF_COOKIE_DOMAIN = "your-production-domain.com"  # 若有子域名需求可设为".your-domain.com"
    
  • 检查服务器反向代理配置:如果使用Nginx等反向代理,需确保转发了正确的请求头,添加以下配置:

    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $host;
    

    同时在Django的settings.py中设置:

    USE_X_FORWARDED_HOST = True
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    

完成上述配置后,重启Django服务和反向代理服务,再测试请求是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 15:42:48