Django向本地Spring应用发送GET请求时出现Connection refused问题
解决Django应用无法连接本地Spring服务的问题
我来帮你排查这个Connection refused的问题——你能正常访问外部网站但连不上本地Spring服务,说明问题肯定出在本地服务的运行状态、网络可达性这几个方向,给你列几个最常见的排查点:
1. 先确认Spring服务真的在跑,且监听对了端口
首先别忽略最基础的:你的Spring应用是不是真的启动成功了?有没有监听5000端口?
- 用终端命令检查端口占用:
- Linux/macOS:
netstat -anp | grep 5000,看看输出里有没有你的Spring进程 - Windows:
netstat -ano | findstr :5000,找到PID后去任务管理器对应进程
- Linux/macOS:
- 如果Spring没启动,先启动它;如果端口不对,要么改Spring的端口配置,要么把Django里的
url2换成正确的端口。
2. 警惕容器环境的网络隔离!
如果你是用Docker部署Django或者Spring的,这是最容易踩的坑:
容器里的localhost指的是容器自己的本地,不是宿主机的localhost!这时候你用http://localhost:5000其实是让Django容器去连它自己的5000端口,当然连不上。
解决方法:
- 把
url2换成宿主机的局域网IP(比如http://192.168.1.105:5000,自己查一下宿主机的IP) - 如果是Docker Desktop环境,也可以用
host.docker.internal代替localhost,比如http://host.docker.internal:5000
3. 检查本地防火墙/安全组
本地防火墙可能会拦截5000端口的请求,尤其是Windows防火墙或者Linux的ufw:
- 临时关闭防火墙试试能不能连上,如果能,就给5000端口添个放行规则:
- Windows:在防火墙高级设置里添入站规则,允许5000端口的TCP请求
- Linux:
sudo ufw allow 5000/tcp
4. 确认Spring服务的监听地址不是仅127.0.0.1
有些Spring应用默认只监听127.0.0.1(也就是只有宿主机本地进程能访问),如果你的Django是在容器或者另一个环境里,就会被拒绝。
解决方法:修改Spring的配置,让它监听所有网卡:
- 在
application.properties里添加:server.address=0.0.0.0 - 或者启动Spring时加参数:
java -jar your-app.jar --server.address=0.0.0.0
最后给你个验证步骤:先在宿主机的浏览器里访问http://localhost:5000,如果浏览器都访问不了,那问题肯定在Spring服务本身;如果浏览器能访问但Django不行,那大概率是网络隔离或者监听地址的问题。
内容的提问来源于stack exchange,提问作者Champer
相关产品推荐
相关产品推荐

