WSL Ubuntu中Flask应用向Windows应用发起POST请求失败求助
WSL2 向 Windows 应用发起 POST 请求的解决方案
确认目标IP正确性:WSL2无法通过
localhost直接访问Windows主机,需使用Windows在WSL虚拟网卡上的IP。在WSL终端执行以下命令获取该IP:cat /etc/resolv.conf | grep nameserver | awk '{print $2}'将POST请求的目标地址从
localhost替换为这个IP,例如http://192.168.1.100:8080。检查Windows应用监听范围:确保Windows端应用不是仅监听
127.0.0.1,而是绑定0.0.0.0以允许外部IP访问。以Python应用为例,启动命令需改为:app.run(host='0.0.0.0', port=8080)手动配置端口转发:在Windows管理员权限的PowerShell中添加端口转发规则,打通WSL2与Windows的端口映射:
# 替换括号内的端口和IP为实际值 netsh interface portproxy add v4tov4 listenaddress=[WSL2本地IP] listenport=[Windows应用端口] connectaddress=[Windows主机IP] connectport=[Windows应用端口]WSL2本地IP可通过
hostname -I在WSL终端获取;Windows主机IP可通过ipconfig在PowerShell中查看。细化防火墙入站规则:检查Windows Defender防火墙的入站规则,确保:
- 规则针对TCP协议和Windows应用的目标端口
- 允许连接的IP范围包含WSL2的虚拟子网(可通过
ip addr show eth0在WSL终端查看,通常为172.16.0.0/12或类似网段) - 规则应用于「专用」和「公网」网络(WSL2网络默认归类为公网)
切换WSL2至网桥模式:若以上方法无效,可将WSL2设置为网桥模式,使其与Windows处于同一局域网:
- 在Windows用户目录下创建或编辑
.wslconfig文件,添加内容:[wsl2] networkingMode=bridged vmSwitch=你的虚拟交换机名称(可在Hyper-V管理器中查看) - 执行
wsl --shutdown重启WSL,之后WSL会获取与Windows同网段的IP,直接使用Windows的局域网IP即可发起请求。
- 在Windows用户目录下创建或编辑
内容的提问来源于stack exchange,提问作者Abraham Lopez
相关产品推荐
相关产品推荐

