适配HTTPS遇到的坑

项目中WKWebvie加载https链接加载网页,因此要适配https,

事先声明呀,这里会有两种情况:

一种大厂的ssl证书,比如苹果,百度等等,以为是大厂,所以加载apple,默认就是信任的,为啥,哈哈,因为,规矩都是被大厂规定的。

第二中,就是人们所所的私人证书,这里,我们就要写代码选择信任我们要访问的网络的证书了,否则,就访问不了。

看这里

我们看到,这是一个可选的代理方法,因此要遵守代理方法,navigationDelegate = self

一看,满是英文,一头雾水,然后费劲心思,琢磨了一番,

描述:当webview需要响应身份验证的挑战,会调用此方法

challenge:身份验证的挑战

completionHandler : 这是一个block,第一个参数是一个NSURLSessionAuthChallengeDisposition类型的枚举,当disposition是NSURLSessionAuthChallengeUseCredential,则参数是为了验证证书用得,如果为nil,代表持续没有验证。如果没有声明此方法,则webviw响应份验证的挑战,disposition为NSURLSessionAuthChallengeRejectProtectionSpace。

/*
         NSURLSessionAuthChallengeUseCredential = 0,                     使用证书
         NSURLSessionAuthChallengePerformDefaultHandling = 1,            忽略证书(默认的处理方式)
         NSURLSessionAuthChallengeCancelAuthenticationChallenge = 2,     忽略书证, 并取消这次请求
         NSURLSessionAuthChallengeRejectProtectionSpace = 3,            拒绝当前这一次, 下一次再询问
         */

大致弄明白了以后,就好办了,

  1. 判断是否是信任服务器证书
  2. 如果是:告诉服务器,客户端信任证书,创建凭证对象,传递参数。
     // 判断是否是信任服务器证书
        if (challenge.protectionSpace.authenticationMethod != NSURLAuthenticationMethodServerTrust) {
            return;
        }
        
        // 告诉服务器,客户端信任证书
        // 创建凭证对象
        NSURLCredential *credential = [[NSURLCredential alloc] initWithTrust:challenge.protectionSpace.serverTrust];
        // 告诉服务器信任证书
        !completionHandler ? : completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
    

     

 

转载于:https://my.oschina.net/u/1581898/blog/1486631

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值