本文目录导读:

前后端联调时遇到网络不通,通常是因为请求被拦截、地址错误或网络层面阻断,可以按照以下思路从简到繁进行排查和修复:
基础排查(80%的问题在这里)
-
确认服务是否真的启动了
- 检查后端控制台:是否有
Started Application in X.XXX seconds或者Listening on port 8080的日志。 - 直接测试:打开浏览器,在地址栏输入后端接口地址(
http://localhost:8080/api/user),看能否返回数据(可能是JSON或错误页面)。 - 常见错误:后端启动失败(端口被占用、数据库未连接等),但IDE没报错。
- 检查后端控制台:是否有
-
确认URL地址拼写
- 端口号:后端是8080,前端请求写了8081?检查
proxy配置或axios的baseURL。 - 协议:后端是
https,前端用http请求?或者反过来(浏览器禁止混用)。 - 路径:多了空格、斜杠,大小写写错(部分Linux系统严格区分)。
- 端口号:后端是8080,前端请求写了8081?检查
-
确认开发环境(浏览器控制台)
- 打开浏览器开发者工具(F12) -> 网络(Network)
- 找到请求(可能显示红色或灰色),查看:
- 状态(Status):
404(路径不对)、500(后端报错)、CORS error(跨域)、ERR_CONNECTION_REFUSED(端口不通)。 - 请求URL:是
http://localhost:8080/api/user还是http://localhost:3000/api/user(未正确代理转发的表现)?
- 找到请求(可能显示红色或灰色),查看:
- 打开浏览器开发者工具(F12) -> 网络(Network)
常见场景对症下药
场景1:前端页面能打开,但请求失败
-
现象:Network面板显示
Failed to load resource: net::ERR_CONNECTION_REFUSED。 -
解决:
- 后端没启动,启动后端。
- 或者前端请求了
localhost:3000但后端在localhost:8080,需要配置代理(Vue/React的devServer.proxy或 Nginx反向代理)。
-
现象:Network面板显示
CORS相关错误(Access-Control-Allow-Origin missing)。 -
解决:
- 开发阶段:前端配置代理(推荐)或后端加
@CrossOrigin(Spring Boot)或cors()(Express)。 - 不要用:浏览器安装CORS插件(只能在本地暂时调试,无法解决线上问题)。
- 开发阶段:前端配置代理(推荐)或后端加
场景2:跨域问题(CORS)
- 现象:后端正常返回数据(状态码200),但浏览器提示
CORS policy: No 'Access-Control-Allow-Origin' header is present。 - 原因:浏览器同源策略阻止了不同端口/域名/协议的请求。
- 方案:
- 前端代理(推荐):在
vite.config.js或vue.config.js中配置/api代理到后端地址。 - 后端允许(临时):后端添加
Access-Control-Allow-Origin: *头(生产环境不建议)。
- 前端代理(推荐):在
场景3:HTTPS与HTTP混合(请求被拦截)
- 现象:访问
https://yourdomain.com,页面脚本请求http://api.xxx.com,浏览器直接拦截(混合内容)。 - 解决:统一使用
https,或者后端升级为HTTPS。
网络/系统层面排查
如果以上都没问题,可能是防火墙或DNS问题:
-
防火墙拦截:
- Windows:检查防火墙是否禁止了后端程序的端口(如8080)。
- Mac/Linux:检查iptables或安全组规则(云服务器)。
-
同一局域网访问(例如手机调试):
- 确认手机和电脑在同一WiFi下。
- 电脑防火墙允许入站连接(尝试关掉防火墙测试)。
- 后端启动时绑定
0.0.0而不是0.0.1(否则只能本机访问)。 - 前端请求地址改为电脑的局域网IP(如
http://192.168.1.100:8080)。
-
DNS缓存:
- 清除浏览器DNS缓存:
chrome://net-internals/#dns点击“Clear host cache”。 - 命令行刷新系统DNS:
ipconfig /flushdns(Windows)或sudo killall -HUP mDNSResponder(Mac)。
- 清除浏览器DNS缓存:
终极排错法
-
用命令行测试(跳过前端):
# Linux/Mac/Git Bash curl -v http://localhost:8080/api/user # Windows CMD curl http://localhost:8080/api/user
- 能拿到数据:说明后端正常,问题在前端或代理配置。
- 拿不到数据:后端有问题(
Connection refused)或防火墙拦截。
-
用Postman/ApiFox等工具测试:
发送同样的请求,看能否成功,如果成功,基本可以断定是前端代码问题或跨域问题。
-
检查前后端日志:
- 前端:浏览器Network标签 -> 点击请求 -> 查看请求头(Headers)、请求体(Payload)、响应体(Preview/Response)。
- 后端:控制台是否有报错日志(如
NullPointerException、SQLException),或者访问日志是否有记录该请求。
总结修通流程
- 先确认后端能通:
curl -v http://localhost:8080/api/health - 再看前端请求:浏览器Network里请求的URL是否正确?是否走了代理?
- 解决常见问题:跨域加代理,路径错修正,启动错重启。
- 检查环境:防火墙、局域网IP、端口绑定。
如果还是不通,建议把以下信息发出来:
- 后端地址和端口
- 前端请求的完整URL
- 浏览器Network中请求的状态(404,500,CORS,Connection refused)
- 后端控制台有无请求到达的日志
标签: 故障排查
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。