美文网首页
iOS ATS / HTTPS的问题

iOS ATS / HTTPS的问题

作者: 红色海_ | 来源:发表于2020-12-31 17:29 被阅读0次
    ATS:

    App Transport Security应用程序传输安全机制

    iOS 9起苹果就开始推荐使用HTTPS,iOS 9中默认是禁止非HTTPS的协议来访问网络的.

    想App继续访问非HTTPS呢?
    解决方法:
    1、在Info.plist中添加NSAppTransportSecurity类型Dictionary。
    2、在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean值设为YES。

    2017年1月1日起苹果提出所有新提交的App默认不允许使用NSAllowsArbitraryLoads来绕过ATS的限制。
    也就是说强制我们用HTTPS,

    那么一些第三方的SDK并没有及时支持HTTPS怎么解决呢?
    解决办法:
    把不支持HTTPS的第三方接口添加到NSExceptionDomains白名单中配置如下:
    1、在Info.plist中添加NSAppTransportSecurity类型Dictionary。
    2、在NSAppTransportSecurity中添加NSExceptionDomains类型Dictionary。
    3、在NSExceptionDomains中添加要支持的域(也就是非HTTPS的接口地址),域作为Key,类型为Dictionary。

        <key>NSAppTransportSecurity</key>
        <dict>
            <key>NSExceptionDomains</key>
            <dict>
                <key>qq.com</key>
                <dict>
                    <key>NSIncludesSubdomains</key>
                    <true/>
                    <key>NSExceptionRequiresForwardSecrecy</key>
                    <false/>
                    <key>NSExceptionAllowsInsecureHTTPLoads</key>
                    <true/>
                </dict>
              </dict>
       </dict>
    


    HTTPS必然会遇到证书的问题
    1. 自签证书
      证书必须是xxx.cer格式,拖入项目的bundle里面。在 challenge方法内 读取服务器来的证书,和工程内的证书比对。。

    2. 公信机构颁发的证书

    是从哪里买的或者是使用限时免费版只要符合苹果官方的证书要求,具体要求参考:Apple-NSAppTransportSecurity。那么什么都不要设置,只需要启用项目的ATS,就可以HTTPS请求了。。
    如果还想添加其它只支持HTTP的请求,按前面Exception Domains的设置即可。

    相关文章

      网友评论

          本文标题:iOS ATS / HTTPS的问题

          本文链接:https://www.haomeiwen.com/subject/alkroktx.html