文档章节

适配HTTPS遇到的坑

tb_engineer
 tb_engineer
发布于 2017/07/25 01:22
字数 429
阅读 53
收藏 0

项目中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);
    

     

 

© 著作权归作者所有

tb_engineer
粉丝 8
博文 24
码字总数 6322
作品 0
广州
程序员
私信 提问
微信小程序开发笔记和那些坑(踩坑篇)

上一篇在介绍微信小程序的基础的时候,其实已经或多或少的谈到了一些坑了,此篇文章会详细罗列出在开发过程中遇到的坑。 首先通过公司的这个项目,让我彻底的了解了微信小程序的开发SDK。之前...

HaiNiu0
2017/11/01
0
0
Android Espresso AppNotIdleException

最近在研究安卓单元测试,看到官方推荐用Espresso做UI层面的测试,就简单用了下。虽然Espresso很简单,但是适配到真实项目中还是走了不少弯路,踩了不少坑的。这里记录一下: 由于项目开发的...

H3c
2018/05/10
0
0
一些日常用到的技术,不断积累中

整理iOS9适配中出现的坑 适配iOS9遇到的一些问题Scheme白名单 Bitcode及解决办法 iOS开发本地缓存(数据离线缓存、读取、释放 [ios] 数据持久化(加密等) 集成设置界面LGSettingView UICol...

iShown
2016/01/19
120
0
移动端解决方案--mobileHack

mobileHack 这里收集了许多移动端上遇到的各种坑与相对解决方案: 工具类网站 HTML5 与 CSS3 技术应用评估 各种奇妙的hack 几乎所有设备的屏幕尺寸与像素密度表 移动设备参数表 ios端移动设备...

1354057778
2015/10/22
589
0
Android适配全面总结(三)

第一篇文章讲了 屏幕适配 上一篇文章讲了 版本适配 这一篇文章讲一下 ROM适配。 Android是开源的,不同的手机厂商都有自己定制的系统,所以这就给开发者带来了ROM适配难题。在一些群里面经常...

阿韦爱Android
2017/11/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

iota硬件集成实战教程

本教程面向iota初学者,我们将学习如何开发基于指定IOTA地址的余额来闭合或断开一个连接到树莓派上的继电器,点亮或熄灭LED。教程虽然简单,但足以展示IOTA的强大能力。 我们将使用一个联网的...

汇智网教程
13分钟前
3
0
influxdb-1.7.8绿色安装-centos7

influxdb作为一款性能强悍的时序数据库, 一旦拥有, 别无所求. 本文介绍它的绿色安装方法. 环境准备, 下载, 解压. [dev5@7bdc6644c7c4 influxdb-1.7.8] cat /etc/redhat-release CentOS Linu...

dev5
17分钟前
1
0
Java 11 新特性

java 11 是继 java8 之后的第一个LTS版本。因此有必要针对它进行一些深入的学习,虽然短时间内java8 还是主流版本。当然,如果从java8基础上升级,几乎可以确定目标就是java11。 同时也要明确...

polly
19分钟前
1
0
SVG

本文转载于:专业的前端网站➯SVG SVG 是使用 XML 来描述二维图形和绘图程序的语言。 SVG 使用 XML 编写。 一、什么是SVG? SVG 指可伸缩矢量图形,使用 XML 格式定义图形,SVG图像在放大或改...

前端老手
19分钟前
2
0
zabbix server proxy

server./configure --prefix=/data/zabbix3.4 --enable-server --enable-agent --with-net-snmp --with-libcurl --enable-proxy --with-mysql=/data/mysql-5.6.44-linux-glibc2.12-x8......

雁南飞丶
20分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部