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

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处于同一局域网:

    1. 在Windows用户目录下创建或编辑.wslconfig文件,添加内容:
      [wsl2]
      networkingMode=bridged
      vmSwitch=你的虚拟交换机名称(可在Hyper-V管理器中查看)
      
    2. 执行wsl --shutdown重启WSL,之后WSL会获取与Windows同网段的IP,直接使用Windows的局域网IP即可发起请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 12:37:08