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

设置SESSION_COOKIE_NAME为__Host-Session后无法登录Django管理后台

Django使用__Host-前缀Session Cookie无法登录的原因及解决

核心原因:和HTTP环境直接相关

浏览器对带__Host-前缀的Cookie有严格的安全强制规则,只要不满足就会直接拒绝存储或发送这类Cookie,导致会话无法维持,自然登不上后台:

  • 必须通过HTTPS传输:HTTP环境下浏览器会直接忽略这类Cookie,登录请求没法携带Session标识,服务器就认不出你。
  • 必须开启Secure属性:这类Cookie要求只能通过HTTPS发送,Django里对应配置SESSION_COOKIE_SECURE = True,本地HTTP环境下这个配置默认是False,完全不符合要求。
  • 不能设置Domain属性:如果你的Django配置了SESSION_COOKIE_DOMAIN,也会违反规则,本地开发一般不用设这个,所以核心问题还是HTTPS缺失。

本地开发的解决办法

如果非要在本地测试__Host-前缀的Cookie,得做这两步:

  1. 启用HTTPS运行Django:用runserver命令时加上SSL证书参数,比如:
    python manage.py runserver --ssl-certfile=./cert.pem --ssl-keyfile=./key.pem
    
    自签名证书可以用openssl生成,本地开发浏览器提示不安全忽略即可。
  2. 调整Django配置:
    SESSION_COOKIE_NAME = "__Host-Session"
    SESSION_COOKIE_SECURE = True
    SESSION_COOKIE_DOMAIN = None  # 确保不要设置域名
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:22:03