如何从同一局域网设备访问本地Uvicorn+React项目后端?
解决局域网内React前端访问Uvicorn后端无响应的问题
以下是几个排查和解决的方向:
检查前端请求的后端地址
这是最常见的问题:如果前端代码里把后端地址写死成localhost:8000或者127.0.0.1:8000,另一台设备访问时会向自己的本机发起请求,自然找不到后端。你需要把前端的后端请求地址改成后端主机的局域网IP(比如192.168.1.100:8000)。
可以在React的环境变量里配置,比如在.env文件里设置REACT_APP_API_URL=http://192.168.1.100:8000,然后在代码里用process.env.REACT_APP_API_URL拼接接口路径。检查后端主机的防火墙设置
即使你把Uvicorn绑定到0.0.0.0,主机的防火墙可能还是会拦截8000端口的入站连接:- Windows:打开「Windows Defender 防火墙」→「高级设置」→「入站规则」,新建规则允许TCP 8000端口的连接,或者直接允许Uvicorn程序通过防火墙。
- Linux:用
ufw allow 8000/tcp(如果用ufw防火墙),或者配置iptables开放8000端口。
确认Uvicorn确实在监听所有网卡
执行命令检查端口监听状态:- Linux/macOS:
ss -tulpn | grep 8000,输出里应该能看到0.0.0.0:8000或者:::8000,而不是127.0.0.1:8000。 - Windows:
netstat -ano | findstr :8000,看本地地址是不是0.0.0.0:8000。
如果显示的是127.0.0.1,说明Uvicorn没正确绑定到0.0.0.0,检查启动命令有没有写错,比如引号或者参数顺序问题。
- Linux/macOS:
验证局域网连通性
在测试设备上ping后端的局域网IP,比如ping 192.168.1.100,如果ping不通,说明两台设备不在同一有效子网:- 检查两台设备是不是连的同一个WiFi/有线网络,有些路由器会把无线和有线分到不同网段。
- 检查后端主机的IP是不是静态的,避免DHCP分配的IP变化导致前端地址失效。
内容的提问来源于stack exchange,提问作者user23344812
相关产品推荐
相关产品推荐

