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

部署于Linux服务器的Django启用HTTPS后出现403 CSRF验证失败求助

解决Django HTTPS下CSRF验证失败(403 Forbidden)的配置方案

一、Django项目核心配置调整

  • 在settings.py中设置CSRF_COOKIE_SECURE = True:该配置强制CSRF Cookie仅通过HTTPS协议传输,适配HTTPS环境的安全规则,避免HTTP/HTTPS环境切换导致的Cookie不匹配问题。
  • 推荐同步设置SESSION_COOKIE_SECURE = True:确保会话Cookie也仅通过HTTPS传输,提升整体应用安全性。
  • 若使用反向代理(如Nginx/Apache),添加SECURE_PROXY_SSL_HEADER配置:告诉Django当前请求实际为HTTPS协议,配置代码如下:
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    
    注意:仅当你完全信任代理服务器发送的X-Forwarded-Proto请求头时使用此配置,防止伪造请求风险。

二、反向代理服务器配置(以Nginx为例)

若通过Nginx转发HTTPS请求到Django,需在Nginx配置的location块中添加以下内容,确保将HTTPS相关信息传递给Django:

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

这些配置会将实际请求协议、客户端IP、主机名传递给Django,让其正确识别请求环境。

三、额外排查步骤

  • 清除浏览器缓存与Cookie:旧的HTTP环境下残留的CSRF Cookie可能导致验证失败,清除后重新测试。
  • 检查CSRF令牌传递:确保表单中正确使用{% csrf_token %}模板标签,AJAX请求需正确携带X-CSRFToken请求头。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:12:40