【问题标题】:App unable to make requests to localhost though port forwarding is working尽管端口转发工作正常,但应用程序无法向 localhost 发出请求
【发布时间】:2018-08-22 00:21:58
【问题描述】:

我正在尝试通过 USB 调试我使用 cordova 构建的 Android 应用。

我的设备显示在 adb 和 chrome://inspect 中,并且我已将设备端口转发到连接到 localhost:9000。 我已经确认端口转发工作正常,因为我可以从设备上的 Chrome 访问localhost:9000

但是,当应用程序尝试向localhost:9000 发出请求时,我收到 404(未找到)错误。 我可以复制应用程序尝试访问的相同地址,它可以在设备上的 Chrome 中正确打开,也可以通过我的开发机器上 Chrome devtools 中的 webview 检查器的地址栏打开。

为什么我的应用程序无法连接到本地主机,而 Chrome 可以?

编辑: 我能找到的最接近的类似问题是Android device communicate with local API server 但是,建议的解决方案(添加 CSP)并没有解决我的问题。

我尝试了一些无济于事的事情:

  • 添加了 CSP
  • 更新了白名单插件
  • 添加了<allow-intent href="*" /><allow-navigation href="*" />
  • 更新了 CLI 版本
  • 使用 IP 连接而不是 localhost

我可能忘记了一些事情,我已经为此工作了一段时间。欢迎任何和所有建议。谢谢!

【问题讨论】:

    标签: javascript android cordova google-chrome-devtools adb


    【解决方案1】:

    我设法通过更改我尝试与客户端连接的本地服务器的绑定来解决此问题。

    我的服务器使用 .NET 和 IIS Express 进行开发,所以我修改了来自

    applicationhost.config 文件
    <binding protocol="http" bindingInformation="*:9000:localhost" />
    

    <binding protocol="http" bindingInformation=":9000:" />
    

    根据Binding IIS Express to an IP Address。这使我可以使用127.0.0.1:9000 或我的机器的IP 而不仅仅是localhost:9000 连接到服务器。 然后我将chrome://inspect 中的端口转发修改为MYLOCALIP:9000 而不是localhost:9000,并将应用程序配置为向127.0.0.1:9000 而不是localhost:9000 发出请求。

    【讨论】:

      【解决方案2】:

      尝试在 config.xml 中使用&lt;access origin='*' allows-arbitrary-loads-for-media='true' allows-arbitrary-loads-in-web-content='true' allows-local-networking='true' /&gt; 在白名单配置中打开连接

      【讨论】:

      • 感谢您的建议,很遗憾这并没有帮助解决我的问题。我的白名单配置如下:
      猜你喜欢
      • 2018-04-13
      • 1970-01-01
      • 2023-01-13
      • 2016-10-13
      • 2023-03-09
      • 2021-02-27
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多