当我在模拟器中运行离子应用程序时:
离子模拟ios --target =“iPhone-6”
访问互联网没有问题。但是当我在调用
后尝试从XCode运行应用程序时离子构建ios
科尔多瓦准备
该应用无法访问互联网。
我已将 cordova-plugin-whitelist 插件添加到我的应用中,并添加了
< allow-navigation href =“*”/>
< allow-intent href =“http:// * / *”/>
< allow-intent href =“https:// * / *”/>
到我的config.xml
和
< meta http-equiv =“Content-Security-Policy”content =“default-src'self'data:gap:https://ssl.gstatic.com; style-src'self''unsafe-inline'; media- src *“>
到我的index.html
代码:
import { Headers, Http, Response } from '@angular/http';
...
public login(url: string, params: any): Observable<any> {
return this.post(url, params) //I have logged the URL and it's fine!
.map((response: any) => {
...
})
.catch((error) => {
console.log("Error: " + JSON.stringify(error));
});
}
错误输出如下:
{
"_body": {
"isTrusted": true
},
"status": 0,
"ok": false,
"statusText": "",
"headers": {},
"type": 3,
"url": null
}
我看过以下内容:
编辑
我看到ionic-cli github页面上仍有一个与此相关的未解决问题。
编辑2
Cordova CLI:6.2.0
离子框架版本:2.0.0-rc.1
离子CLI版本:2.1.8
Ionic App Lib版本:2.1.4
Ionic App Scripts版本:0.0.30
ios-deploy版本:1.9.0
ios-sim版本:5.0.11
操作系统:macOS Sierra Node版本:v6.7.0
Xcode版本:Xcode 8.1 Build版本8B62
答案 0 :(得分:1)
您是否负责App Transport Security?
从iOS9开始,Apple要求您允许info.plist中的特定域或明确允许所有外部加载(Apple不推荐这种加载,但最简单的测试用例是查看问题是否由ATS引起) 。
有关App Transport Security的更多信息:https://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/在您的info.plist
中基本上你必须在info.plist中指定以下内容(同样:不推荐外部加载的一般容差,你可以通过上面的链接找到有关如何指定域的详细信息:)):< / p>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- other stuff -->
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<!-- other stuff -->
</dict>
</plist>
答案 1 :(得分:0)
所以根据这个SO Answer:
Safari可用于调试连接的iOS设备上的Ionic应用程序。首先,我们需要在连接的设备上启用Web Inspector。可以在设置&gt;下找到Web Inspector。 Safari&gt;高级即可。接下来,转到Mac上的Safari并在 Safari&gt;下的菜单栏中启用Show Develop菜单。偏好&gt;高级即可。连接的设备现在应显示在“开发”菜单中。从那里,您可以检查它并使用Safari的开发人员工具来调试您的应用程序!
这导致我使用Safari在模拟器上调试iOS应用程序(现在也拒绝连接到互联网)。我看到了错误:
拒绝连接https://.../login,因为它既不出现在connect-src指令中,也出现在内容安全策略的default-src指令中。
事实证明,METEOR过去曾遇到类似问题,但已通过添加以下行在cordova上解决:
&lt; meta http-equiv =&#34; Content-Security-Policy&#34; content =&#34; default-src * gap:// ready file:; style-src&#39; self&#39; &#39;不安全直插&#39; *; script-src&#39; self&#39; &#39;不安全直插&#39; &#39;不安全-EVAL&#39; *&#34;&GT;
让我访问网络服务!
答案 2 :(得分:0)
我通过将下面的代码添加到后端索引页面(我的后端是CI)
来解决它MethodName
并使用以下代码从移动端使用API获取数据
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, Accept,Authorization, X-Request-With');
header('Access-Control-Allow-Credentials: true');
答案 3 :(得分:0)
我一直致力于离子3项目,我也面临着一个问题,即离子ios应用程序无法连接到互联网并且总是出错 - &gt; {&#34; isTrusted&#34; = true}但从未连接到互联网...我也尝试过应用自定义元标记,ionic.config.json中的代理以及互联网上给出的其他内容,但我的问题得到了解决通过删除一个名为 webkit 插件的插件,特别是对于ios ...在Android应用程序上运行良好的插件,但在ios 9及更高版本上导致问题。