虽然端口转发正在运行,但App无法向localhost发出请求

时间:2018-03-13 16:35:11

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

我正在尝试调试使用Cordova over USB构建的Android应用程序。

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

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

为什么Chrome可以在我的应用无法连接到localhost?

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

我试过的一些事情无济于事:

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

我可能已经忘记了一些事情,我一直在研究这个问题一段时间。任何和所有建议欢迎。谢谢!

2 个答案:

答案 0 :(得分:0)

尝试在config.xml

中使用<access origin='*' allows-arbitrary-loads-for-media='true' allows-arbitrary-loads-in-web-content='true' allows-local-networking='true' />打开白名单配置上的连接

答案 1 :(得分:0)

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

我的服务器正在使用.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发送请求。