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

AWS托管Django站点配置SSL证书与HTTPS遇到访问登录问题求助

问题根因
  • AWS负载均衡默认做SSL卸载:用户端到负载均衡走HTTPS协议,负载均衡转发到后端Django服务时走HTTP协议。你未配置Django识别代理传递的原始请求协议,Django会默认认为所有请求都是HTTP协议。
  • 开启SESSION_COOKIE_SECURE、CSRF_COOKIE_SECURE后,Django只会在HTTPS请求场景下下发安全cookie,识别到请求是HTTP时就不会下发对应的session、CSRF cookie,最终导致登录态无法建立、CSRF校验失败,出现登录页反复重载、CSRF报错的问题。
  • 之前未加上述两个参数时可正常登录,但浏览器提示不安全,是因为此时站点默认走HTTP协议访问,没有HTTPS加密,浏览器会做不安全标记;手动添加https前缀访问时,Django仍会返回HTTP协议的资源或跳转,触发浏览器的非私有连接警告。
解决方案

按以下步骤修改Django的settings.py配置:

  1. 新增代理协议识别配置,让Django可以正确识别用户端的真实请求协议
# 信任负载均衡传递的X-Forwarded-Proto头,判断用户是否用HTTPS访问
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
# 允许读取负载均衡传递的原始请求域名
USE_X_FORWARDED_HOST = True
# 按实际情况配置你的站点域名,不要用*提升安全性
ALLOWED_HOSTS = ["你的站点域名", ".你的站点域名"]
  1. 补充完整HTTPS安全配置,保留你之前新增的两个参数,添加强制HTTPS跳转配置
# 保留你之前新增的配置
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
# 自动将所有HTTP请求跳转到HTTPS,解决手动加HTTPS前缀的问题,必须和上面的SECURE_PROXY_SSL_HEADER配套使用,否则会出现无限跳转
SECURE_SSL_REDIRECT = True
# 原有配置保留
SESSION_COOKIE_HTTPONLY = True
CSRF_COOKIE_HTTPONLY = False
  1. 配置完成后重新部署你的Elastic Beanstalk应用,部署完成后清空浏览器缓存和已有Cookie再测试即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:06:01