使用NSURLConnection忽略SSL证书错误

col*_*ron 1 cocoa nsurlconnection sendasynchronousrequest

我正在使用[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)]从Web服务提取数据,但Web服务器具有自行颁发的证书,导致出现此错误:

SSL错误

显示错误:

NSAlert *a = [NSAlert alertWithError:error];
[a runModal];
Run Code Online (Sandbox Code Playgroud)

有没有办法忽略这个错误并继续?

col*_*ron 6

按照链接问题中的说明,我为NSURLConnection定义了一个虚拟接口:

@interface NSURLRequest (DummyInterface)
+ (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString*)host;
@end
Run Code Online (Sandbox Code Playgroud)

并在创建请求之前调用该方法:

[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
Run Code Online (Sandbox Code Playgroud)

这抑制了证书无效的错误.

  • 这不是私有API吗? (3认同)
  • *"我冒着API改变的风险......"* - 对于任何攻击者来说,泄露和丢失信息的风险如何?你告诉你的顾客吗? (3认同)