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

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

但是,当应用程序尝试tp向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连接


我可能忘记了一些东西,我已经在此方面进行了一段时间的研究。任何和所有建议,欢迎。谢谢!

最佳答案

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

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

关于javascript - 尽管端口转发正常,但应用无法向本地主机发出请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49261355/

10-11 09:16