python-为什么Django抛出错误“ /的DisallowedHost”?

我正在使用此Digital Ocean教程设置自己的Django服务器。 我按照每个步骤创建了Django框架,并使用以下命令运行服务器:

./manage.py runserver 0.0.0.0:8000

当我尝试访问端口8000上的IP时,显示以下错误:

DisallowedHost at /
Invalid HTTP_HOST header: 'XXX.XXX.XXX.XXX:8000'. You may need to add u'XXX.XXX.XXX.XXX' to ALLOWED_HOSTS.

(用X代替IP)

为什么会这样呢?

alukin asked 2020-08-10T11:43:06Z
2个解决方案
70 votes

在您的Host中,有一个名为ALLOWED_HOSTS的列表。您需要将在错误中看到的IP地址添加到该列表中:

Host

不应添加端口。

说明:

Django检查HTTP请求的Host标头中是否存在允许的主机内的url / ip地址。

从django网站:

这是一种安全措施,可以防止HTTP Host标头攻击,即使在许多看似安全的Web服务器配置下也可能发生这种攻击。

[HTTPS://docs.Django project.com/恩/Dev/热风/settings/#allowed-hosts]

randyr answered 2020-08-10T11:43:39Z
0 votes

同时包括(“ www.name.com”,“ ip.ip.ip.ip”)设置Debug = True,然后重试IP和URL地址。

转到“回溯”部分,找到消息[提高DisallowedHost(msg)]单击->▼本地变量

它将显示传入的域名和允许的主机的设置:

*Variable       Value
*allowed_hosts  ['ip.ip.ip.ip', 'name.com']
*domain          'something.com'
*

将输入值复制到您的settings.py中。 如果看到旧设置,请重新启动服务器\ nginx

chad answered 2020-08-10T11:44:12Z
translate from https://stackoverflow.com:/questions/40667519/why-is-django-throwing-error-disallowedhost-at