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

为何Django会响应未在ALLOWED_HOSTS中配置的访问请求?

Django ALLOWED_HOSTS 配置项实际作用解答
  • ALLOWED_HOSTS 并不限制发起请求的源IP地址,它的核心作用是校验HTTP请求头中Host字段的取值是否属于服务端允许的范围,和问题场景中提到的源IP为3.3.3.3没有任何关联。

问题场景中配置为 ALLOWED_HOSTS = ["1.1.1.1", "2.2.2.2"] 时,3.3.3.3的请求仍能正常通过,是因为该请求的Host请求头填写的值为1.1.1.1或2.2.2.2,符合配置的允许规则,完全不受源IP的影响。

ALLOWED_HOSTS 是Django为了防范HTTP Host头攻击设计的安全配置:

  • 攻击者可以构造携带恶意Host头的请求,诱导站点生成指向恶意域名的链接、泄露跨站点的缓存内容,甚至触发CSRF校验绕过等问题
  • 只有当请求的Host头落在ALLOWED_HOSTS配置的列表中时,Django才会处理该请求,相当于明确了当前Django服务对外提供服务的合法域名/IP范围

如果需要限制请求的源IP地址,需要通过其他方式实现:

  • 可以在Nginx、Apache等前置Web代理层配置IP访问控制规则
  • 也可以自定义Django中间件,校验请求的REMOTE_ADDR字段来拦截不符合要求的源IP

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:36:03