zoukankan      html  css  js  c++  java
  • 正确适配苹果ATS审核要求的姿势

    首先,ATS的技术行为不会有任何变化(除了新增两个字段NSAllowsArbitraryLoadsInWebContent和NSRequiresCertificateTransparency,也就是更细分权限)。从技术角度来看,ATS在iOS10中和iOS9中的表现完全一致。
    那么到底是什么变化了呢?我们会收紧审核政策,即对于开发者添加的ATS例外(即HTTP接口),要求提供一个“合理的解释”。之所以要增加这么一个“麻烦”,是为了避免开发者们都无脑地全局关闭ATS,使得ATS偏离其初衷,形同虚设。开发者将无法再无脑地全局关闭ATS,并且添加例外时需要提供合理的解释。
    如此看来,苹果是想以这样的形式教育和促进HTTPS的普及,但也没有激进到一刀切的地步。一句话总结:你仍然可以在2017年之后使用HTTP​接口,但需要在ATS中添加例外,同时审核时多少说两句理由。更重要的是,你要知道这个政策会越来越紧。
    躲得过初一,躲不过十五。早点开始考虑向HTTPS迁移吧!

    针对 Info.plist

    iOS 10 在之前版本中,app都在 Info.plist 中添加 NSAppTransportSecurity
    字典并且将 NSAllowsArbitraryLoads
    设置为YES来禁用 ATS。iOS 10中又添加了 NSAllowsArbitraryLoadsInWebContent 字典,这会对迁移方案产生什么影响呢?根据苹果要求,app 已经不能再使用之前的方式来禁用 ATS,也就意味着 NSAllowsArbitraryLoads 只能设置为 NO,否则就需要在审核时说明 app 不支持ATS的原因。
    业内大神王巍已经总结了一幅非常直观的ATS对HTTP影响图表,如下:
    1、NSAllowsArbitraryLoads 设置为 YES 似乎可以解决问题,但这不符合苹果ATS要求。


    Paste_Image.png


    2、NSAllowsArbitraryLoads 设置为 NO,NSAllowsArbitraryLoadsInWebContent 设置为 YES,HTTP只有在iOS 10下的 WKWebview可用。


    E1AA34EA-640E-4F79-8BEF-7990BA8777C0.png

    3、NSAllowsArbitraryLoads ,NSAllowsArbitraryLoadsInWebContent 都设置为 NO,HTTP全部不可用。


    8C850327-049F-4004-BF9A-4CC9529AA242.png

    4、NSAllowsArbitraryLoads 设置为 YES,NSAllowsArbitraryLoadsInWebContent 设置为 NO,HTTP只支持iOS 9但不符合ATS要求,而且iOS 10下的 WKWebview也不可用。


    1FDB664B-FC60-47C1-888C-92F9E6D21700.png

    5、NSAllowsArbitraryLoads ,NSAllowsArbitraryLoadsInWebContent 都设置为 YES,HTTP只有 WKWebView 支持。


    9DBACE6B-7E3B-467F-B09B-E62E1785A0A3.png

    综合苹果要求,与实际产品业务需求,选择使用 NSAllowsArbitraryLoads 设置为 NO (避免审核风险),NSAllowsArbitraryLoadsInWebContent 设置为 YES(允许链接HTTP),设置HTTP域名访问白名单,使用WKWebView作为Web容器的技术方案。

    针对NSURLSession API

    只需将网络库更新至最新版的AFNetworking,即可完美支持HTTP、HTTPS的API请求。


    41EB44A0-4BB0-4614-B56C-D5C5453D9304.png

    针对Web容器

    使用 WKWebView 替换 UIWebView,业务对接采用Web与Native交互协议来解决兼容问题。iOS 10 中 WKWebView 完美支持HTTP、HTTPS的链接浏览(包括在线视频播放)。


    887917D7-858D-4004-B495-6E7FDE2873B1.png

    针对网络图片下载库SDWebImage

    测试环境下将会使用自签名的SLL证书,需要修改一些代码才能支持,生产环境下使用商业签名证书无需做修改。


    9DF0B1D0-4C03-4BC5-B6BB-61456DDC58D4.png

    针对第三方HTTP链接

    可以设置 NSExceptionDomains 属性来将需要排除强制验证的域名写进来。 也就是说我如果我们的 app 只访问我们自己的服务器, 我们可以将我们服务器的域名添加进来,依然可以继续使用 HTTP。但我们不能像之前那样简单粗暴的直接把所有的请求都通过。NSExceptionDomains 的设置方法如下, 比如我们要将 campus.chinahr.com 这个域名排除在 ATS 验证之外,就可以这样:


    WechatIMG36.jpeg

    不过苹果建议如果要提供浏览器类的服务,请使用SFSafariViewController(UI不可定制),优于WKWebView,后者更适用于对用户访问web内容更有把控的情况。

  • 相关阅读:
    tensorFlow(二)线性回归
    tensorFlow(一)相关重要函数理解
    Java NIO学习笔记-通道&缓冲区
    Code Plus插件开发笔记
    Java NIO框架Netty demo
    前端React开发入门笔记
    Tomcat性能优化
    Spring Boot整合Dubbo框架demo
    Spring Boot入门实例
    简单的RPC原型与实现原理
  • 原文地址:https://www.cnblogs.com/jx66/p/7474208.html
Copyright © 2011-2022 走看看