项目中WKWebvie加载https连接加载网页,所以要适配https,web
事先声明呀,这里会有两种状况:服务器
一种大厂的ssl证书,好比苹果,百度等等,觉得是大厂,因此加载apple,默认就是信任的,为啥,哈哈,由于,规矩都是被大厂规定的。网络
第二中,就是人们所所的私人证书,这里,咱们就要写代码选择信任咱们要访问的网络的证书了,不然,就访问不了。app
咱们看到,这是一个可选的代理方法,所以要遵照代理方法,navigationDelegate = self代理
一看,尽是英文,一头雾水,而后费劲心思,琢磨了一番,code
描述:当webview须要响应身份验证的挑战,会调用此方法orm
challenge:身份验证的挑战server
completionHandler : 这是一个block,第一个参数是一个NSURLSessionAuthChallengeDisposition类型的枚举,当disposition是NSURLSessionAuthChallengeUseCredential,则参数是为了验证证书用得,若是为nil,表明持续没有验证。若是没有声明此方法,则webviw响应份验证的挑战,disposition为NSURLSessionAuthChallengeRejectProtectionSpace。对象
/* NSURLSessionAuthChallengeUseCredential = 0, 使用证书 NSURLSessionAuthChallengePerformDefaultHandling = 1, 忽略证书(默认的处理方式) NSURLSessionAuthChallengeCancelAuthenticationChallenge = 2, 忽略书证, 并取消此次请求 NSURLSessionAuthChallengeRejectProtectionSpace = 3, 拒绝当前这一次, 下一次再询问 */
大体弄明白了之后,就好办了,ssl
// 判断是不是信任服务器证书 if (challenge.protectionSpace.authenticationMethod != NSURLAuthenticationMethodServerTrust) { return; } // 告诉服务器,客户端信任证书 // 建立凭证对象 NSURLCredential *credential = [[NSURLCredential alloc] initWithTrust:challenge.protectionSpace.serverTrust]; // 告诉服务器信任证书 !completionHandler ? : completionHandler(NSURLSessionAuthChallengeUseCredential, credential);