您的位置:首页 > 理论基础 > 计算机网络

django_Invalid HTTP_HOST header: '192.168.163.140'. You may need to add '192.168.163.140' to ALLOWED

2017-10-31 15:55 666 查看
在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重新绑定攻击。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐