Cocoa 使用NSURLConnection忽略SSL证书错误
我正在使用Cocoa 使用NSURLConnection忽略SSL证书错误,cocoa,nsurlconnection,sendasynchronousrequest,Cocoa,Nsurlconnection,Sendasynchronousrequest,我正在使用[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue]completionHandler:^(NSURResponse*response,NSData*data,NSError*error)]从web服务中提取数据,但web服务器具有自行颁发的证书,导致出现此错误: 使用以下命令显示错误: NSAlert *a = [NSAlert alertWithError:error
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue]completionHandler:^(NSURResponse*response,NSData*data,NSError*error)]
从web服务中提取数据,但web服务器具有自行颁发的证书,导致出现此错误:
使用以下命令显示错误:
NSAlert *a = [NSAlert alertWithError:error];
[a runModal];
有没有办法忽略此错误并继续?按照链接问题中的说明,我为NSURLConnection定义了一个虚拟接口:
@interface NSURLRequest (DummyInterface)
+ (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString*)host;
@end
并在创建请求之前调用该方法:
[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
这抑制了证书无效的错误。按照链接问题中的说明,我为NSURLConnection定义了一个虚拟接口:
@interface NSURLRequest (DummyInterface)
+ (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString*)host;
@end
并在创建请求之前调用该方法:
[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
这抑制了有关证书无效的错误。这可能会被Apple拒绝。使用NSConnectiondatadelegate的正确实现: 想办法解决这个问题:
这可能会被苹果公司拒绝。使用NSConnectiondatadelegate的正确实现: 想办法解决这个问题:
可能重复的问题我想这是以前问过的问题,找到并重新命名了前面的问题。希望它能解决您的问题。您是对的,这是一个重复(虽然我没有得到答案,因为我搜索了
sendAsynchronousRequest
,所以这个问题专门针对该方法)。“使用NSURLConnection忽略SSL证书错误”-与其忽略错误,不如解决问题(假设这是一个非常重要的错误,比如假证书而不是过期的证书)。如果你不打算正确使用PKI和SSL,那么为什么还要使用它呢?我想这可能是以前问过的问题的重复项,找到并重新命名了前面的问题。希望它能解决你的问题。你是对的,这是一个重复项(虽然我没有得到答案,因为我搜索了sendAsynchronousRequest
,所以这个问题专门针对该方法)。“使用NSURLConnection忽略SSL证书错误”-与其忽略错误,不如解决问题(假设这是一个非常重要的错误,比如假证书而不是过期证书)。如果您不打算正确使用PKI和SSL,那么为什么要使用它呢?这不是私有API吗?是的,但我的应用程序不在应用程序商店中,而是直接分发的,所以我不必担心被拒绝。当然,我冒着API在更高版本的OS X中更改的风险,因为这是未经记录的。很酷,只是想确定一下“我冒着API更改的风险。。。"-对于任何进行攻击的人来说,信息泄漏和丢失的风险如何?您是否告诉您的客户了?这不是私人API吗?是的,但我的应用程序不在应用商店中,而是直接分发的,因此我不必担心被拒绝。当然,我会冒API在更高版本的OS X中更改的风险,因为这是未记录的ed.酷,只是想确保“我冒着API更改的风险…”-对于任何进行攻击的人来说,信息泄漏和丢失的风险如何?您是否告诉您的客户了?我不能使用nsurlconnectionlegate
方法,因为我正在调用-sendsynchronousrequest
。尽管如此,这对于我的应用程序来说是一个没有意义的问题,因为我通过为服务器购买SSL证书来解决这个问题。I c不能使用nsurlconnectionelegate
方法,因为我正在调用-sendAsynchronousRequest
。尽管如此,这对于我的应用程序来说是一个没有意义的问题,因为我通过为服务器购买SSL证书解决了这个问题。