NSURLSession didReceiveChallenge只调用一次

时间:2014-11-24 18:33:56

标签: ios ssl-certificate nsurlsession

我正在使用NSURLSession dataTaskWithRequest:completionHandler:向我的服务器发出一些请求。我使用的是自签名证书,因此当委托人URLSession:didReceiveChallenge:completionHandler:被调用时,我可以进行内部检查以验证一切正常。

这一切都适用于我发送的第一个请求。在使用NSURLSessionAuthChallengeUseCredential调用完成处理程序后,下一个请求永远不会调用URLSession:didReceiveChallenge:completionHandler:

由于我不想进入这篇文章的原因,我希望每次都能调用URLSession:didReceiveChallenge:completionHandler:,以便我可以自己检查。我假设NSURLSession以某种方式缓存证书并将其保存在某种有效的证书中#34;列表所以每次都不做这个检查。我想清除这个缓存,这样我每次都可以自己检查。如果我重新启动应用程序,则会再次调用URLSession:didReceiveChallenge:completionHandler:

我尝试将凭据存储设置为零但没有成功:

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
configuration.URLCredentialStorage = nil;
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
[[session dataTaskWithRequest:request
            completionHandler:^(NSData *data,
                                NSURLResponse *response,
                                NSError *error) {

                ...

            }] resume];

任何想法如何实现这一目标?

谢谢!

1 个答案:

答案 0 :(得分:0)

对于在这里尝试过一切的人来说,后端可能会出现问题。因此,通过在nginx服务器中禁用ssl会话缓存来解决此问题。