iOS10 ATS问题方案

iOS 9中默认非 http 的网络是被禁止的,我们当时的做法是把App Transport Security Settings下的NSAllowsArbitraryLoads设置为 YES来禁用 ATS。虽有效 ,但过于粗暴,直接禁用了 ATS,违背了苹果爸爸的初衷,这估计也是苹果爸爸当时说要在17年元旦起不允许我们通过这个方法跳过 ATS 的原因。
虽然后来发文推迟执行这一决策,但是苹果爸爸的态度,却是比较明朗了。

虽然不能直接禁用 ATS,但是我们可以通过 NSExceptionDomains 来针对特定的域名开放 http 权限。
具体方案:

  1. 在项目中的info.plist中添加 Key:App Transport Security Settings,类型为字典类型。
  2. 然后给它添加一个 Exception Domains,类型为字典类型。
  3. 把需要支持的域添加到 Exception Domains 下,其中域作为 key,类型为字典类型。
  4. 每个域下设置三个属性:NSIncludesSubdomains(设置域下对应的子域名是否可用)、NSExceptionRequiresForwardSecrecy、NSExceptionAllowsInsecureHTTPLoads(设置是否允许不安全的 http)。
1.png

提示:系统中用到的所有非 https 的网络请求,都要进行设置。比如网络图片可能是放在三方托管服务器,只提供 http 访问,那么这个域也是必须要设置才能获取到图片的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 很可能你的应用是与一个支持HTTPS传输数据的服务器交互,但是并没有使用TLS 1.2或更高。在这种情况下,你定义...
    Www刘阅读 3,154评论 0 5
  • 因为要结局swift3.0中引用snapKit的问题,看到一篇介绍Xcode8,swift3变化的文章,觉得很详细...
    uniapp阅读 4,551评论 0 12
  • 我们都缺失一场好好的告别,总想着还会马上见面的啊,特别是在高速便捷交通时代。想见你一张车票,一张机票,随时到。 昨...
    燕子坞阅读 193评论 0 1
  • “噢,宫瑟呢?,我找他有事。” 在会场中的各位孩子们和他们的父母听得一愣一愣的,什么月殿认识?还认识宫瑟!那都是兮...
    篱栅未年阅读 217评论 0 0