You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Django前后端项目API请求异常问题求助

解决方案

1. 解决容器内请求127.0.0.1连接拒绝的问题

容器内的127.0.0.1指向容器自身的本地回环,而非宿主机或其他容器。在docker-compose编排的环境中,容器之间必须通过服务名(即docker-compose.yaml中定义的服务名称)通信,你改用event_backend:8001的方向是对的,接下来解决DisallowedHost错误。

2. 修复DisallowedHost错误

这个错误是因为Django后端的ALLOWED_HOSTS配置未包含请求的Host值(此处为event_backend)。

具体操作:

  • 打开后端Django项目的settings.py,找到ALLOWED_HOSTS配置项:

    ALLOWED_HOSTS = ['localhost', '127.0.0.1', '你的前端域名/IP']
    
  • 将后端服务名event_backend添加到列表中,修改后如下:

    ALLOWED_HOSTS = ['localhost', '127.0.0.1', '你的前端域名/IP', 'event_backend']
    

    测试环境可临时用ALLOWED_HOSTS = ['*'],但生产环境必须指定明确的Host值。

  • 确保后端容器的Django服务绑定到0.0.0.0启动,这样才能接受其他容器的请求。检查docker-compose.yaml中后端服务的command配置:

    services:
      event_backend:
        # 其他配置...
        command: python manage.py runserver 0.0.0.0:8001
    

    必须是0.0.0.0:8001,而非127.0.0.1:8001,否则服务仅在容器内部可见,外部容器无法访问。

3. 为什么前端AJAX调用正常?

AJAX由浏览器发起请求,请求的Host是你访问前端的域名/IP(比如宿主机IP、localhost或自定义域名),这个值已经在后端的ALLOWED_HOSTS中,因此不会触发DisallowedHost错误;而前端视图函数是在前端容器内部发起请求,Host为event_backend,不在原有配置里,所以才会报错。


内容的提问来源于stack exchange,提问作者j3romeproj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 06:59:53