以前苹果强制app上传AppStore必须支持ATS,截至日期是2017年01月01日,可是因为各类缘由,致使deadline延期.具体何时苹果会强制ATS,官方暂时尚未给出明确答复.ios
支持Https后,通常状况下只会给域名添加证书.致使app全部的http请求都会走域名,这样就会有DNS劫持的风险.不管wifi网络下,仍是移动网络根据域名都会去DNS服务解析成ip,而后进行访问.因为国内网络环境的缘由,都会有DNS劫持的状况,通常会在访问网页的时候,在页面上嵌入一段js代码,甚至有些状况会出现DNS解析失败.尤为是用户达到必定规模,各类网络情况都会出现.浏览器
这里用移动设备举例,若是是wifi网络,通常用户是不会修改网络设置的DNS. 颇有可能用户网络环境因为种种缘由,会形成没法访问http服务.ATS以前的解决方案是能够直接使用ip地址,通常app都会有这样一个逻辑,从服务器获取DNS Config,这里面通常配置了domain,ip,protocol,port等属性,App的请求能够根据DNS Config进行动态调整.可是支持ATS后天,苹果设置必须支持https.这样一旦使用域名的http服务,都会有可能遇到DNS劫持的状况.安全
因为IP不必定可以长期保持,因此通常不会给ip地址配证书.一旦苹果强制支持ATS,那么就存在DNS劫持的风险.bash
dig命令查询DNS解析,下面是解析百度的域名服务器
dig www.baidu.com ; <<>> DiG 9.8.3-P1 <<>> www.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48389 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 5 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 380 IN CNAME www.a.shifen.com. www.a.shifen.com. 134 IN A 119.75.218.70 www.a.shifen.com. 134 IN A 119.75.217.109 ;; AUTHORITY SECTION: a.shifen.com. 194 IN NS ns3.a.shifen.com. a.shifen.com. 194 IN NS ns5.a.shifen.com. a.shifen.com. 194 IN NS ns4.a.shifen.com. a.shifen.com. 194 IN NS ns2.a.shifen.com. a.shifen.com. 194 IN NS ns1.a.shifen.com. ;; ADDITIONAL SECTION: ns4.a.shifen.com. 49 IN A 115.239.210.176 ns2.a.shifen.com. 580 IN A 180.149.133.241 ns5.a.shifen.com. 580 IN A 119.75.222.17 ns1.a.shifen.com. 580 IN A 61.135.165.224 ns3.a.shifen.com. 238 IN A 61.135.162.215 ;; Query time: 6 msec ;; SERVER: 172.17.16.3#53(172.17.16.3) ;; WHEN: Tue Feb 21 12:25:06 2017 ;; MSG SIZE rcvd: 260
浏览器直接输入这两个ip:119.75.218.70,119.75.217.109,能够直接访问百度.若是前面加上https://119.75.218.70,进行访问,因为没有证书会显示不安全的连接.可是跳过以后仍是可以正常访问.我用ios设备测试,底层调用https://ip能够正常访问.各类请求都没有问题.网络
若是正常网络环境下能够用全部的http服务尽可能域名访问,每次启动app时能够向服务器获取dig出来的ip做为备用ip,一旦遇到DNS劫持的状况,虽然没有给ip配证书,可是底层可使用ip正常访问.app