为什么Django会抛出错误"DisallowedHost at /"?

alu*_*kin 43 python django django-settings

我正在使用这个数字海洋教程设置我自己的Django服务器.我在每个步骤后创建了Django框架,并使用以下命令运行服务器:

./manage.py runserver 0.0.0.0:8000
Run Code Online (Sandbox Code Playgroud)

当我尝试在端口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.
Run Code Online (Sandbox Code Playgroud)

(用X代替的IP)

为什么会这样?

ran*_*dyr 71

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

ALLOWED_HOSTS = ['XX.XX.XX.XX']

不应添加端口.

说明:

Django检查HostHTTP请求的标头是否在允许的主机内的url/ip地址.

来自django网站:

这是一种防止HTTP主机头攻击的安全措施,即使在许多看似安全的Web服务器配置下也是如此.

https://docs.djangoproject.com/en/1.10/ref/settings/#allowed-hosts

  • @alukin我不同意Aditya.在其他IP正在进行API调用的情况下,您无需添加它们.ALLOWED_HOSTS是服务器应响应的主机名列表,而不是 (7认同)

小智 10

对于开发,您可以使用*通配符来允许所有主机settings.py

ALLOWED_HOSTS = ['*']

重要的

在生产环境中部署应用程序时修改此配置。