1.背景
1.苹果最近调整了HTTP连接的思路,要求iOS开发代码中所有的http连接都必须使用,https安全连接方式。
2.在实现HTTP服务中,会有种VIP的保障逻辑。在域名解析失败(DNS劫持是其中一种情况)而无法连接时候,会内置ip地址,保证在最坏的情况下,可以连通服务。
那么问题来了,HTTPS直接使用HOST为ip地址的时候,是无法正确使用SSL校验安全证书的,因为证书和域名绑定。
2.环境
curl组件c实现库,iOS开发工程
3.方案
实现方式只是在现有curl组件实现的,http逻辑逻辑基础上补充。具体完整curl实现http请求逻辑,待补充。
原理:通过IP直接访问网站,解决DNS劫持问题。DNS劫持中,对于HTTPS请求,有SSL校验安全证书的过程,这个时候HOST参数对应的域名是被绑定到证书上,进行安全校验,而IP是无法通过校验的。这个时候只有在SSL校验之前修改HOST参数为实际绑定的域名,才能完成SSL安全校验。这个时候就涉及到CURL组件里面