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

基于Djoser的Django用户激活出现400 Bad Request错误求助

解决Djoser用户激活时的Invalid HTTP_HOST header问题

问题分析

你遇到的Invalid HTTP_HOST header: '1.0.0.127.in-addr.arpa:8000'错误,源于localhost被反向DNS解析成了这个特殊域名,导致请求的Host头不符合Django的ALLOWED_HOSTS配置。即便将该域名添加到ALLOWED_HOSTS,也可能因解析或请求头的底层问题无法生效。

解决方案

1. 强制指定请求Host头(最快见效)

在Postman的激活请求中手动添加Host头:

  • 切换到请求的Headers标签页
  • 添加键为Host、值为localhost:8000的头信息
  • 重新发送激活请求

2. 临时放宽ALLOWED_HOSTS(仅开发环境)

修改settings.py中的配置:

ALLOWED_HOSTS = ['*']

⚠️ 注意:此方法仅用于本地开发测试,生产环境绝对禁止使用,会引发安全风险。

3. 修正本地DNS映射

检查系统hosts文件,确保localhost与127.0.0.1正确绑定:

  • Windows:C:\Windows\System32\drivers\etc\hosts
  • macOS/Linux:/etc/hosts
    添加或确认以下内容:
127.0.0.1   localhost
::1         localhost

4. 指定Django服务绑定地址

启动服务时明确绑定到127.0.0.1,避免默认的0.0.0.0引发解析问题:

python manage.py runserver 127.0.0.1:8000

额外优化点

你的UserAccount模型中is_active默认设为True,但Djoser的标准激活逻辑是将未激活用户的is_active从False改为True。如果后续激活成功但用户状态不符合预期,建议修改默认值:

is_active = models.BooleanField(default=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:14:57