HTTPDNS

来源:互联网 发布:淘宝是什么类型的网站 编辑:程序博客网 时间:2024/05/12 04:27

HTTPDNS介绍

       https://help.aliyun.com/document_detail/30102.html

  • 使用HTTP协议访问阿里云的服务端获得域名解析结果,绕过运营商的Local DNS,避免域名劫持。

  • 由于运营商策略的多样性,其Local DNS的解析结果可能不是最近、最优的节点,HTTPDNS能够直接得到客户端的出口网关IP,从而能够更准确地判断客户端的地区和运营商,得到更精准的解析结果。

方案

1.创建一个DnsUtils方法,来获取LocalDns和请求HttpDns分别存在缓存中:

             (1)获取LocalDns方法:InetAddress.getByName(域名).getHostAddress()

             (2)获取HttpDns是通过请求阿里的指定网址来接收服务器端配置的ip地址;

2.在创建 okHttpClient 时进行判断替换dns,请求的域名(HostName)如果包含在缓存的DnsMap中,则将网络请求的dns替换为map中的值(优先级:localDns>httpDns>默认);

   进行https访问时,会涉及到证书的问题,在请求证书的链接里,带的HostName还是默认的域名,这点需要注意进行HttpUrl的替换!因为如果Nginx配置默认返回的是别的域名的证书,会在域名校验上会失败,有三种解决方案:

          (1)修改Nginx上的配置

          (2)手机端在证书校验的时候统一放过,安全性太差

          (3)手机端做出兼容,请求时的HostName如果存在于缓存中所存储的DnsMap里,证书校验给放过,其他请求时还走正常的校验流程。(目前采用这种方案)


0 0
原创粉丝点击