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

标签 python django django-settings

我正在使用 Digital Ocean tutorial 设置我自己的 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.

(IP 替换为 X)

为什么会这样?

最佳答案

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

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

注意:添加 IP 地址,添加端口(例如,127.0.0.1 和不是 127.0.0.1:8000)

说明:

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

来自 django 网站:

This is a security measure to prevent HTTP Host header attacks, which are possible even under many seemingly-safe web server configurations.

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

关于python - 为什么 Django 抛出错误 "DisallowedHost at/"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40667519/

相关文章:

django - 干草堆 : KeyError in the elasticsearch_backend module

javascript - Django 民意调查教程第 3 部分 : polls/templates/polls/index. html - 此代码是什么?这不是 python

python - Django 表单 - 使用数据库中的变量

django - 如何在 heroku-django 项目中设置环境变量?

python - 从 Pandas 中的所有列值中去除空间

python - 使用 url 通过 urllib python 请求时遇到编码问题

python - f 字符串不支持行连接吗?

python - 如何使用 Line Edit 在 PyQt 中等待用户输入?

django - 在中间件中动态更改 SITE_ID 是个好主意吗?

python - Django MessageMiddleware 失败