我正在通过urlSessionDelegate以一种自定义的方式处理服务器信任身份验证挑战(将来自服务器信任的公钥与散列的本地版本进行比较),类似于这里的处理方式:How do I accept a self-signed SSL certificate using iOS 7's NSURLSession and its family of delegate methods for development purposes?
正如documentation中所述,如果我希望自己无法通过服务器信任身份验证,则需要取消质询。执行此操作时,我的数据任务将使用NSURLErrorCancelled完成。我有一些错误处理类,它们查看由数据任务返回的结果NSURLError,如果我得到NSURLErrorServerCertificateUntrusted,对我来说会干净得多。
有没有办法做到这一点?或者,只有在自动处理身份验证时,才会转发这些服务器错误,而不使用委托方法?
发布于 2019-05-21 09:46:08
有问题的证书的正常处理会因该错误而失败吗?
如果是这样的话,您可以在这种情况下使用。
如果不是,我认为唯一的方法是与挑战发送者打交道,这是非常不受鼓励的,尽管如果你调用它,然后调用正确的完成处理程序,这可能不是灾难性的。不过,您很有可能会收到两个回调。我从来没有尝试过这样做。
我的建议是向苹果提交一个bug,要求一个适当的应用程序接口来传递NSError和取消。
https://stackoverflow.com/questions/56225350
复制相似问题