【发布时间】:2018-12-04 20:36:36
【问题描述】:
我们正在 ionic 中开发一个混合移动应用程序,以从服务器获取数据并将其显示在应用程序中。 我们有一个自签名证书来查询我们的服务器。我们已将 .cer 文件放在 xcode project->target for iOS 中。 它对使用证书的 https 查询给出了例外。
我们的开发环境版本如下: 离子版本 3.20.0
我们正在为 http 使用以下插件。 https://ionicframework.com/docs/native/http/
离子代码如下
let head = {
'Access-Control-Allow-Origin' : '*',
'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, PUT',
'Accept':'application/json',
'content-type':'application/json'
}
this.http.enableSSLPinning(true).then(data =>{
console.log("SSL success");
})
.catch(error =>{
console.log("SSL error");
});
this.http.acceptAllCerts(true);
this.http.setDataSerializer("json");
this.http.post(this.getProfileURL, requestData, head)
.then(data => {
console.log("success");
resolve(JSON.parse(data.data));
})
.catch(error => {
reject(error.error);
});
});
此代码适用于 Android,不适用于 iOS 它给出以下错误: * 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'* -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
问题: 1、证书的位置是否正确? (我们已将 .cer 文件放在 xcode project->target for iOS 中。) 2. 我们应该使用哪种证书类型 - .cer、.der、.pem? 3. 如何解决 NSInvalidArgumentException?
对此的任何帮助将不胜感激。谢谢。
【问题讨论】:
-
我可以通过以下步骤解决这个问题: 1. 将 .der 文件放在位置 - 项目 -> 目标或 www/certificates 2. 在您的 iOS swift 代码中,转到文件 AFSecurityPolicy.m在方法certificatesInBundle中,并将捆绑路径ForResourcesOfType:@“cer”更改为捆绑路径ForResourcesOfType:@“der”
-
我们在 iOS 和 Android 上都面临着类似的问题,请您帮忙。它给出证书错误。这是我的代码: import { HttpClient, HttpHeaders } from '@angular/common/http';从 '@ionic-native/http' 导入 { HTTP, HTTPResponse };构造函数(私有_mHTTP:HTTP){} this._mHTTP.get(路径,{},标题).then((d)=> {让t:T = this.convertReturn
(d.data);返回t ; }) 当前获取错误代码:0
标签: ios ionic-framework https ssl-certificate afnetworking