django - 无效的 HTTP_HOST header : The domain name provided is not valid -- requests to dockerized django app using container name

标签 django docker flask docker-compose

在由通过 docker-compose 运行的多个微服务组成的应用程序中,我需要一种方法来从一个容器(app 通过 flask 和请求)直接向另一个(chart/django)发出请求:

这是我正在尝试的简化版本。

路线.py:

@APP.route('/post_data', methods=['POST'])
def post_data():
  post_data = request.get_json()
  response = requests.post('http://chart_app_1:8080/json/', data=post_data)
  return response.text

我得到的响应是一条错误消息:
django.core.exceptions.DisallowedHost: Invalid HTTP_HOST header: 'chart_app_1:8080'. The domain name provided is not valid according to RFC 1034/1035

我能够向运行 Flask 应用程序的其他容器发出这种请求,没有任何问题。不过,我无法控制我们是否将 Django 用于这个特定的微服务。

看来这可能是因为主机名中有下划线:see this post .有没有解决的办法?似乎必须可以在容器之间进行简单的请求。

最佳答案

在 docker-compose 文件中,修改服务名称以避免 Django 服务中的下划线。

这是我所知道的避免错误的唯一方法,因为它不是 Docker 限制而是 Django 问题。

关于django - 无效的 HTTP_HOST header : The domain name provided is not valid -- requests to dockerized django app using container name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52997543/

相关文章:

javascript - Django - 从 javascript 附加一个可重用的模板

django - Django项目的数据库选择选择

docker - 如何在 docker 容器内运行 cron 作业?

javascript - Python Flask 出现 AJAX CORS 错误

python - 使用带有 flask 的python-saml获取 "Signature validation failed. SAML Response rejected"

javascript - 在 django admin 中禁用/隐藏不必要的内联表单

python - 具有多个参数的自定义模板标签

docker - nvidia-docker run 与 docker run --runtime=nvidia

node.js - Mongoose 服务器选择错误 ECONNREFUSED 与 docker-compose

python - 在给定目录 : static files not found 上部署 Flask 应用程序