@wwanghee
2016-07-25T02:16:30.000000Z
字数 1299
阅读 685
1、Apple 表示将继续在 iOS 10 和 macOS 10.12 里收紧对普通 HTTP 的访问限制。从 2017 年 1 月 1 日起,所有的新提交 app 默认是不允许使用 NSAllowsArbitraryLoads 来绕过 ATS 限制的,也就是说,我们最好保证 app 的所有网络请求都是 HTTPS 加密的。
2、为HTTP/2铺路,HTTP/2是建立在HTTPS基础之上的,HTTP/2的最大优点就是所有通信都是在一个TCP连接上完成,等部署完成之后,我们的代码可以这样写:

基于此背景,我们将对业务进行https的改造和升级。
工欲善其事,必先利其器,我们的抓包工具Fiddler要支持HTTPS的调试,还需要配置一番。如下图所示:

并且需要在手机端安装证书:

在手机端的浏览器输入Fiddler代理的IP以及端口号,例如我的代理是:
192.168.191.1:8080,则会出现此界面,然后点击红框部分下载Fiddler根证书并根据提示进行安装。
至此Fiddler即可对HTTPS进行抓包了。
接入HTTPS并不是一帆风顺的,其中也是历经坎坷,俗称「踩坑&填坑」。这里讲述一下遇到的问题,有遇到同样问题的同学可以借鉴。
证书之前配错了,如下图所示:

目前已经改正:


最后查出原因是Fiddler的WILLOW插件存在BUG,在转发过程中改变了请求头,导致服务器拒绝访问。
解决方法:
1、不使用WILLOW插件作为改HOST工具,可以使用其它HOST切换工具替代。
2、可以使用目录替换的方式,不使用本地服务器的方式。
目前也联系了WILLOW的维护者,跟进此问题。
目前线上严格的CSP配置会拒绝所有非HTTPS的请求(同源策略的影响),所以改造了CSP的配置,暂时放宽部分http的请求,保证项目过渡阶段正常运行。
我们的构建工具inline插件已经兼容https,可以正常使用

原因是web server配置跨域头的设置有问题导致,目前运维同学已修复此问题。
1、所有请求http://改为//,兼容http及https
2、替换域名,替换规则如下:
CDN域名:
imgcache.qq.com->gxh.vip.qq.com
imgcache.gtimg.cn->gxh.vip.qq.com
i.gtimg.cn->gxh.vip.qq.com
CGI域名:
logic.content.qq.com->g.vip.qq.com
pay.content.qq.com->gpay.vip.qq.com
1、https下,jsbridge有问题(目前定位到是终端问题)
2、http://gxh.vip.qq.com和https://gxh.vip.qq.com对于同样的资源访问结果不一致(目前让运维同学跟进中)
3、https下,sso有异常(目前还在定位中)