我正在尝试实现Ionic提供的示例教程 http://ccoenraets.github.io/ionic-tutorial/install-ionic.html
我可以在Android虚拟设备上部署示例应用。但是,该应用程序无法访问笔记本电脑上托管的REST服务。我试图通过将“localhost”更改为“10.0.2.2”来访问该服务。我还在config.xml中添加了以下内容
<access origin="*"/>
有人可以告诉我如何解决这个问题吗?
答案 0 :(得分:9)
如果您使用的是最新版本的cordova,则必须安装cordova plugin whitelist:
cordova plugin add cordova-plugin-whitelist
如果您使用选项--save
,则会在 config.xml 文件中添加一个部分:
cordova plugin add cordova-plugin-whitelist --save
您可以阅读有关最近cordova更新中重要更改的一些有用信息here。
你需要这个:
<access origin="*" />
在 config.xml 文件中设置。
如果您使用 Android模拟器,则必须更改localhost
中的10.0.2.2
,当然,如果端口与端口不同,则必须添加端口默认值:80。
参考here。
如果您使用的是Genymotion(远比Android模拟器更好),则IP地址将为:10.0.3.2
+端口号。
<强>样品强>
Android模拟器:http://10.0.2.2:6050/api/checkstatus
Genymotion :http://10.0.3.2:6050/api/checkstatus
如果你想为android模拟器安装调试信息,请从命令行运行:
adb -s emulator-5554 logcat
如果您在 IIS Express 中运行Web服务器,则您的请求可能无法到达主机。 这里有一些选择。我最喜欢的解决方案是使用iisexpress-proxy 您可以将其安装为npm包:
npm install -g iisexpress-proxy
并运行它指定代理端口:
iisexpress-proxy 6050 to 3000
现在您可以更改模拟器的端口:
Android模拟器:http://10.0.2.2:3000/api/checkstatus
Genymotion :http://10.0.3.2:3000/api/checkstatus
可能最好的解决方案是使用真正的Android设备并使用chrome inspect调试您的应用程序。
你必须:
一旦您的设备显示在列表中,您可以点击F12并查看您在浏览器控制台中收到的错误类型。
您甚至可以将端口转发转发请求用于内部服务器;基本上,您可以通过您要定义的虚拟端口访问笔记本电脑上的托管服务。