因?yàn)閍pple公司決定在2017年全面使用https來提高網(wǎng)絡(luò)傳輸?shù)陌踩?,遂跟公司后臺溝通添加了CA機(jī)構(gòu)認(rèn)證的SSL證書,將接口全面升級到了https。
遇到的問題:
1.使用AFNetking封裝的工具類
2.在xcode8.1上訪問后臺正常的代碼,在xcode8.2運(yùn)行就會報(bào)code = -999 ,cancelled?

問題代碼: ? 封裝的AFNetworking工具類
+(instancetype)share{
static NetWorkingManager *instance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
? ? ? NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
? ? ?//1.實(shí)例化
? ? ?instance = [[NetWorkingManager alloc] initWithSessionConfiguration:config];
? ? ?//2.可接受的格式
? ? ?instance.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", ? ? @"text/json", @"text/javascript", @"text/html", nil];
});
return instance;
}
和后臺溝通后,得知后臺配置的SSL證書是一個(gè)小型CA機(jī)構(gòu)頒發(fā)的免費(fèi)證書,恍然大悟,自己陷入了一個(gè)認(rèn)為證書無誤的坑里,xcode升級到8.2后對證書的驗(yàn)證更加嚴(yán)格了,認(rèn)定公司后臺的證書為無效證書,每次訪問會自動幫你取消掉。
解決代碼如下:
在上文的單例中添加安全策略,及允許無效證書訪問
AFSecurityPolicy *security = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
[security setValidatesDomainName:NO];
security.allowInvalidCertificates = YES;
instance.securityPolicy = security;
解決,收工
