Django 无效 HTTP_HOST header:'<ip>'。您可能需要将“<ip>”添加到 ALLOWED_HOSTS

Django Invalid HTTP_HOST header: '<ip>'. You may need to add '<ip>' to ALLOWED_HOSTS

<ip> 显示的是实际 IP 地址,我只是没有将其包含在标题中。 我相信这个 ip 地址是我的 EC2 实例的内部 ip。我正在使用 AWS Elastic beanstalk 来托管。

我看到这个问题在 SO 上得到了很多回答,答案总是将 ip 地址添加到 ALLOWED_HOSTS,但在我的例子中,我设置了 ALLOWED_HOSTS=[ '*'] 我仍然收到错误。

奇怪的是,当我尝试从我的 phone 访问该站点时,我才收到错误消息。当我从桌面浏览器访问时,它工作正常...

我尝试过的事情:

  1. 我仔细检查了我的 elastic beanstalk 部署,确实部署了更改。

好吧,这可能不是其他人的答案,但对我来说是.. 在我的例子中,我正在从我的前端执行一个 http GET 请求,忘记了 url 末尾的额外“/”。我的 django urls.py 定义了 url 末尾有一个斜线。我的解决方法是在执行 http GET 时添加额外的“/”。

在我的桌面上,这是自动处理的,因为 django 会使用自动重定向 (302) 进行回复,而我的桌面浏览器会转到 url 末尾带有 /,但我的 phone没有进行重定向!

这不知何故引发了无效的 HTTP_HOST header 错误。

对于大多数人来说,解决此类错误消息的方法是将您的所有域添加到 ALLOWED_HOSTS 的列表中。

哦,如果您像我一样使用 elasticbeanstalk,请不要忘记添加 AWS 域名。它应该看起来像这样:

ALLOWED_HOSTS = ['<your-unique-id>.elasticbeanstalk.com', 'example.com', '<your-subdomain>.example.com']

不要在产品中做 ALLOWED_HOSTS = ['*']!!