【问题标题】:Avoiding getting "Invalid HTTP_HOST header: 'localhost'" message with Django + Elastic Beanstalk避免使用 Django + Elastic Beanstalk 获得“无效的 HTTP_HOST 标头:'localhost'”消息
【发布时间】:2019-07-09 06:01:30
【问题描述】:

我在 Elastic Beanstalk 上设置了 Django 应用程序。工作和运行都很棒。

我的设置文件只包含所需的允许主机 --

ALLOWED_HOSTS = ['mysite.com']

我收到发送到我的电子邮件的 Django 错误——这通常是我喜欢的。但是,每次我重新部署我的应用程序(我是通过上传 ZIP 文件夹而不是通过 CLI 来完成的)时,我都会收到此消息

Invalid HTTP_HOST header: 'localhost'. You may need to add 'localhost' to ALLOWED_HOSTS.

我在运行我的网站时没有遇到任何问题,我只是不喜欢收到此错误。我想我可以添加 localhost(或者可能是 127.0.0.1)作为允许的主机——但是出于安全原因,我不确定这是否是一个好主意。

这里可能会发生什么,我该如何解决?添加这些主机可以吗?

编辑:

澄清一下,当我将代码部署到 Elastic Beanstalk 时会发生这种情况,而不是在本地运行它时。

【问题讨论】:

  • 您可以创建两个设置文件。一种用于生产,一种用于开发。在开发文件中,您可以在 ALLOWED_HOST 中添加 127.0.0.1localhost,在 [生产设置中添加 mysite.com。因此,无论何时在生产环境中运行应用程序,都需要调用 production_settings.py,而在开发环境中,您可以使用 dev_settings.py。这是您要找的吗?
  • @ReemaParakh 不——我已经有了类似if PRODUCTION_STATUS == 'LOCAL' then ALLOWED_HOSTS = [*]的设置
  • 在这种情况下,要在本地运行,您需要在设置文件中设置localhost127.0.0.1

标签: django amazon-elastic-beanstalk


【解决方案1】:

您已经在ALLOWED_HOSTS 中提供了您的域,但是当您在本地运行项目时,它仍然需要来自您的mysite.com 的请求。所以你需要把localhost也加给你ALLOWED_HOSTS

Settings.py

ALLOWED_HOSTS = [
                'mysite.com',
                'localhost:8000',                 #<-- add this
                '127.0.0.1:8000'                  #<-- add these just in case
                ]

【讨论】:

  • 感谢您的回答——不过我不是在谈论在本地运行项目。
  • @bones225,你解决了这个问题吗?我目前有同样的问题。
  • @NeilAggarwal 我没有。我猜将localhost 放在产品ALLOWED_HOSTS 中会解决这个问题,但是我对这样做的安全影响知之甚少,因此我觉得这样做很舒服。每次部署时我都会发现一封错误电子邮件......我还有其他鱼要炒 xD
猜你喜欢
  • 2019-09-29
  • 2013-09-10
  • 2016-05-17
  • 2013-02-20
  • 2014-04-20
  • 2017-03-27
  • 2017-01-23
  • 2016-07-11
相关资源
最近更新 更多