我有问题 - 当我在我的 iPhone 上编译和运行我的 ionic2 应用程序时,我无法从我的 restful 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(我更改 hosts 文件)在本地运行的服务。
因此,要在您的 iOS 设备中看到此服务,您应该编辑 config.xml 文件并找到与此类似的行:
<allow-navigation href="http://192.168.8.101:8100" />
这是网络服务器使用的本地主机的 IP(在不同的计算机上可能会有所不同)地址,其中 ionic2 使用角度应用程序进行热模块更换 (HMR)。因此,要访问您的 LOCAL api,请使用其端口和以上 IP 并像这样在 config.xml 行中写入:
<allow-intent href="http://192.168.8.101:8082/*" />
并在您的 api 角度提供程序中使用此地址(您可以将此地址保存在单独的 .env.ts 文件中,以便轻松地在一个地方更改它,具体取决于您要构建的应用程序:测试、产品、本地)。之后,您可以通过以下方式使用 HMR 构建和运行您的应用:
ionic cordova run ios -l
(编辑 config.xml 文件时,无需终止并再次运行上述命令 - 更改将自动更新)
最佳答案
第一个问题
尝试安装 cordova-plugin-whitelist
$ cordova plugin add cordova-plugin-whitelist --save
$ cordova prepare
然后将以下行添加到 config.xml
<allow-intent href="http://my-api.com:8082/*"/>
我想如果你克服了第一个问题,第二个问题也会解决
关于iOS ionic 2 : How to send http request to different port than 80/443 (https),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44515477/