ATS中

苹果前段时间要求上架的应用都要支持https协议,并为此设计了ATS这个配置项。具体来说就是,应用默认是不支持http协议的,如果的确需要使用http,可以通过ATS来指明允许哪些域名使用http协议。

最常见的使用方法

直接将Allow Arbitrary Loads项设置成YES,这样应用就可以访问所有的http站点。这样做显然是不安全的,苹果同样也不建议我们这样做。去年还定下这种使用方式的最后期限为2017/01/01,最终没有推进成功,这个期限也就不了了之了。也就是说,这种方法还是可以用并且能够通过审核的。


常用配置

更细致的使用方法

我们可以通过ATS中的Exception Domains配置项来定义我们需要访问的http站点。也就意味着除了我们定义的站点外,应用不能够访问其它http站点。参见下图:


更细致的配置

以域名为key值,并针对该域名配置相应的属性值,下面简单介绍下几个常用的属性值:
NSExceptionMinimumTLSVersion:指定域名使用的TSL版本号
NSExceptionRequiresForwardSecrecy:指定域名是否要求至少HA256的加密算法
NSThirdPartyExceptionRequiresForwardSecrecy:同上,并指明该域名为第三方域名,开发人员无法控制
NSIncludesSubdomains:表明该域名下的子域名是否适用于该配置
NSExceptionAllowsInsecureHttpLoads:指明是否访问那些没有证书、自签名证书、过期证书及证书与域名不匹配的服务器。

惊奇的一幕

上面说的所有都是网上已经被写熟的东西,这里说一点很奇特的无意中发现的东西:ATS对直接使用IP地址的http请求不起作用!

在末配置ATS的应用中使用http域名请求数据时会报下面这个错误,将域名改成ip地址加端口号再次请求,错误log打印不见了,且数据请求成功了,这是苹果的BUG吗?还是苹果故意留下的?


未配置ATS的http请求报错

这点实际上也没有什么用途,毕竟能直接用ip的情况太少了,而且现在苹果也没有再强推https了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,965评论 19 139
  • 很可能你的应用是与一个支持HTTPS传输数据的服务器交互,但是并没有使用TLS 1.2或更高。在这种情况下,你定义...
    Www刘阅读 3,303评论 0 5
  • 苹果文档翻译 iOS10 NSAppTransportSecurity 原文链接 原文版本:2016-09-07 ...
    fever105阅读 12,853评论 8 12
  • 姓名 :刘静华 时间: 2017.9.10(第10天) 【一个目标】99天家庭收入15万。 【今日种下的与此目标相...
    俩宝的妈咪阅读 115评论 0 0
  • 回家的路越来越难走 那里有妈妈的盼望 有熟悉的声音 熟悉的土地 熟悉的窑洞 越来越多的熟悉的父辈离开 那些年轻的身...
    丫头yuer阅读 661评论 2 3

友情链接更多精彩内容