Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 使用NSURLConnection忽略SSL证书错误_Cocoa_Nsurlconnection_Sendasynchronousrequest - Fatal编程技术网

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证书解决了这个问题。