无效的http_host标头

Kat*_*jan 93 python django http-host python-2.7

我正在尝试使用Django框架开发一个网站,并使用DigitalOcean.com启动并将必要的文件部署到django-project中.

我不得不将静态文件包含到Django-project中并且在收集静态文件之后,我尝试刷新我的ip

我包括了我用来创建网站的教程. https://www.pythonprogramming.net/django-web-server-publish-tutorial/

我收到以下错误:

DisallowedHost at/Invalid HTTP_HOST标题:'198.211.99.20'.您可能需要将u'198.211.99.20'添加到ALLOWED_HOSTS.

有人可以帮我解决这个问题吗?这是我第一个使用Django框架的网站.

Pra*_*edi 155

错误日志很简单.如它所示,您需要将198.211.99.20添加 到您的ALLOWED_HOSTS设置中.

在项目的settings.py文件中,设置ALLOWED_HOSTS如下:

ALLOWED_HOSTS = ['198.211.99.20', 'localhost', '127.0.0.1']
Run Code Online (Sandbox Code Playgroud)

如需进一步阅读,请 阅读此处.

  • 这肯定有效,但这是不好的做法,因为您应该始终使用 .env 文件 (3认同)
  • @JesusAlmaral .env 文件是包含密码和其他敏感信息的本地文件。如果您将所有这些敏感信息放入代码本身中,那么它可能会受到损害。因此,我们使用这个本地文件 .env,每个人都在本地存储自己的密码等 (2认同)
  • FWIW,在我们的例子中,所有通过裸 IP 地址进行的访问都是可疑的。我们的解决方案是将 Web 服务器配置为拒绝所有与 Django 接受的不匹配的“Host”标头。 (2认同)

Geo*_*vei 9

设置.py

ALLOWED_HOSTS = ['*'] // if you are in dev or docker
Run Code Online (Sandbox Code Playgroud)

已编辑

好吧,如果您不使用 docker,请不要在生产中执行此操作,只需输入 IP 地址即可。

格雷廷斯

  • 您不想在生产中使用“*”。这完全绕过了允许主机的原因和安全性。 (13认同)
  • 哈哈,那是用于开发环境的。在生产中只需设置 DEBUG=False 即可。 (7认同)
  • 正如 pydanny 所说,“……一旦你弄清楚了这一点,就不要让它这样。原因是这使得 Django 可能容易受到 HTTP_HOST 标头攻击。并且自动脚本会在互联网上搜索以检查网站是否存在此漏洞。” https://github.com/pydanny/cookiecutter-django/issues/914#issuecomment-263614761 (4认同)