因为apple公司决定在2017年全面使用https来提高网络传输的安全性,遂跟公司后台沟通添加了CA机构认证的SSL证书,将接口全面升级到了https。
遇到的问题:
1.使用AFNetking封装的工具类
2.在xcode8.1上访问后台正常的代码,在xcode8.2运行就会报code = -999 ,cancelled
问题代码: 封装的AFNetworking工具类
+(instancetype)share{
static NetWorkingManager *instance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
//1.实例化
instance = [[NetWorkingManager alloc] initWithSessionConfiguration:config];
//2.可接受的格式
instance.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];
});
return instance;
}
和后台沟通后,得知后台配置的SSL证书是一个小型CA机构颁发的免费证书,恍然大悟,自己陷入了一个认为证书无误的坑里,xcode升级到8.2后对证书的验证更加严格了,认定公司后台的证书为无效证书,每次访问会自动帮你取消掉。
解决代码如下:
在上文的单例中添加安全策略,及允许无效证书访问
AFSecurityPolicy *security = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
[security setValidatesDomainName:NO];
security.allowInvalidCertificates = YES;
instance.securityPolicy = security;
解决,收工