我正在尝试调试使用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并不能解决我的问题。
我试过的一些事情无济于事:
<allow-intent href="*" />
和<allow-navigation href="*" />
localhost
我可能已经忘记了一些事情,我一直在研究这个问题一段时间。任何和所有建议欢迎。谢谢!
答案 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
发送请求。