离子代理适用于离子服务,而不适用于ios模拟器或设备

时间:2015-11-19 20:36:24

标签: ios xcode cordova ionic

我的离子应用程序中有一个简单的Web服务...它连接到远程服务器以执行简单的任务。

代理是以离子形式设置的:

  "proxies": [{
     "path": "/api",
     "proxyUrl": "http://example.com/api"
   }]

并且呼叫是" / api"。这些可以在localhost浏览器中正确解析http://example.com/api(使用离子服务)。

但是在xcode中,网址被解析为:

file:///api

我无法对此发现任何具体内容。怎么表明我要求ios?

2 个答案:

答案 0 :(得分:3)

我在Android设备上运行时遇到了同样的问题,解决方案很简单,请注意这里是我们用来处理CORS问题的代理,这个问题只与桌面浏览器有关,所以在使用时离子服务我们需要代理,我们不需要使用代理其他设备。 我在服务中使用了以下条件来处理这个问题,而不是在为任何目标平台构建时进行任何进一步的代码更改。

var APIUrl = '/myproxies';
if (this.platform.is('core') == true){
    APIUrl = '/myproxies';
}else{
    APIUrl = 'http://api.sample.com/SomeSampleAPIProvider';
}
this.http.get(APIUrl+"/Json").map(res => res.json()).subscribe(
    data => {.....

可以参考此link来了解this.platform的使用详情

答案 1 :(得分:0)

这是预期的行动。离子CLI代理仅用于离子CLI服务或运行命令。更多信息:http://blog.ionic.io/handling-cors-issues-in-ionic/

file:/// api url不会触发Angular浏览器CORS pre-flight OPTIONS调用,所以你应该没事。

您遇到的任何其他CORS问题都将出现在服务器端。