在django启动后,通过web访问启动的django
整个系统报错:
Invalid HTTP_HOST header: '192.168.163.140'. You may need to add '192.168.163.140' to ALLOWED_HOSTS.
问题及处理如下:
首先找到django的settings.py文件对其中的
ALLOWED_HOSTS
Default: [] (Empty list)
表示此Django站点
可以投放的主机/域名的字符串列表。这是防止HTTP主机头部攻击的安全措施,即使在许多看似安全的Web服务器配置下也是如此。
此列表中的值可以是完全限定名称(例如“www.example.com”
),在这种情况下,它们将完全匹配请求的主机标头(不区分大小写,不包括端口)。以期间开头的值可以用作子域通配符:'.example.com'
将匹配example.com
,www.example.com
和example.com的任何其他子域
。值“*”
匹配任何东西;在这种情况下,您有责任提供您自己对Host头
的验证(可能在中间件中);如果是这样,中间件必须首先列在MIDDLEWARE
中)。
Django还允许任何条目的完全限定域名(FQDN)。某些浏览器在主机标头中包含一个后跟点,Django在执行主机验证时将其标记。
如果主机头(或X-Forwarded-Host
(如果USE_X_FORWARDED_HOST
已启用))与此列表中的任何值不匹配,则django.http.HttpRequest.get_host()
方法将引发SuspiciousOperation
。
当DEBUG为True
并且ALLOWED_HOSTS为空
时,主机将针对['localhost','127.0.0.1','[:: 1]']
进行验证。
此验证仅适用于get_host()
;如果您的代码直接从request.META
访问Host头,您将绕过此安全保护。
在Django更改1.10.3: 在旧版本中,如果DEBUG = True,则未检查ALLOWED_HOSTS。这也在Django 1.9.11和1.8.16中改变,以防止DNS重新绑定攻击。