iOS ionic2:如何将http请求发送到80/443(https)以外的其他端口

时间:2017-06-13 07:56:05

标签: ios cordova http ionic2

我有问题 - 当我在我的iPhone上编译并运行我的ionic2应用程序时,我无法从我的resti api获取数据:http://my-api.com:8082/api/v1

第二个问题是我甚至无法得到错误(!) - 我执行此操作:

this.http.get('http://my-api.com:8082/api/v1/users')
    .map( res => res.json() )
    .subscribe( result => { .. }, err => { .. })

但在iphone上没有 - 没有错误,没有结果 - (

ionic lab中,一切正常 - 完全访问

更新

下面我'检查'正确答案,但我想告诉更多关于这个话题 - 可能这对其他人有帮助。我想进一步尝试使用子域my-api.dev:8082运行LOCALy的服务(我更改hosts文件)。

因此,要在iOS设备中显示此服务,您应该编辑config.xml文件并找到与此类似的行:

<allow-navigation href="http://192.168.8.101:8100" />

这是由webserver使用的本地主机的IP(它可以在不同的计算机上变化),具有由ionic2用于热模块替换(HMR)的角度应用程序。因此,要访问您的LOCAL api,请使用其PORT及以上IP并写入config.xml行,如下所示:

<allow-intent href="http://192.168.8.101:8082/*" />

并在您的api角度提供程序中使用此地址(您可以将此地址保存在单独的.env.ts文件中,以便在一个地方轻松更改它取决于您想要的应用程序构建:test,prod,local)。之后,您可以使用HMR构建和运行您的应用程序:

ionic cordova run ios -l

(编辑config.xml文件时,不需要杀死并再次运行命令 - 更改将自动更新)

1 个答案:

答案 0 :(得分:1)

第一个问题 尝试安装cordova-plugin-whitelist

$ cordova plugin add cordova-plugin-whitelist --save
$ cordova prepare

然后将以下行添加到config.xml

<allow-intent href="http://my-api.com:8082/*"/>

我认为如果你克服了第一个问题,第二个问题也会解决