我有一个使用 Django 的应用程序,在 Django 配置中有一个列表ALLOWED_HOSTS
。
xxx.xxx.xxx.xxx
该应用程序使用列表中的IP 运行良好ALLOWED_HOSTS
。
然后它抛出了 Django 错误
"Invalid HTTP_HOST header: 'ec2-xx-xxx-xxx-xxx.region.compute.amazonaws.com'. You may need to add 'ec2-xx-xxx-xxx-xxx.region.compute.amazonaws.com' to ALLOWED_HOSTS."
虽然我可以通过添加新条目来解决这个问题ALLOWED_HOSTS
,但我想知道HTTP_HOST
标头如何/何时在 AWS EC2 的 IP 和 DNS 形式之间切换。
参考:DjangoALLLOWED_HOSTS
https://docs.djangoproject.com/en/2.0/ref/settings/#allowed-hosts
答案1
HTTPHost:
标头由客户端(例如 Web 浏览器或 API 库)提供,通常是客户端所用的确切名称告诉访问 – 基本上,它是从 URL 中获取的。
因此如果您尝试访问http://ec2-xx.amazonaws.com/page.html
,服务器将收到:
GET /page.html HTTP/1.1
Host: ec2-xx.amazonaws.com
但是如果 HTTP 请求中间有任何东西 - 例如反向代理或 HTTP 负载平衡器 - 它可以用自己的内容覆盖 Host: 标头。