0

我正在通过 以自定义方式处理服务器信任身份验证挑战(将来自服务器信任的公钥与散列本地版本进行比较)urlSessionDelegate,类似于此处的处理方式: How do I accept a self-signed SSL certificate using iOS 7 的 NSURLSession 及其用于开发目的的委托方法系列?

文档中所述,如果我想自己使服务器信任身份验证失败,我需要取消质询。执行此操作时,我的数据任务将使用NSURLErrorCancelled. 我有一些错误处理类,它们查看NSURLError数据任务返回的结果,如果我得到它会更干净NSURLErrorServerCertificateUntrusted

有没有办法做到这一点?还是仅在自动处理身份验证而不使用委托方法时才转发这些服务器错误?

4

1 回答 1

1

有问题的证书的正常处理是否会因该错误而失败?

如果是这样,您可以在这种情况下使用 NSURLSessionAuthChallengePerformDefaultHandling。

如果不是,我认为唯一的方法是与挑战发送者混在一起,这是非常不鼓励的,尽管如果你调用它然后调用正确的完成处理程序可能不是灾难性的。不过,您很有可能会收到两次回调。我从来没有尝试过这个。

我的建议是向 Apple 提交一个错误,要求提供适当的 API 来传递 NSError 以及取消。

于 2019-05-21T01:46:07.890 回答