iOS12 无法加载HTTP

作者: 欢乐的乐 | 来源:发表于2018-10-22 11:14 被阅读114次

    解决问题

    当无法加载http图片或者链接的时候,百度到一波需要如下的设置:

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoadsInWebContent</key>
        <true/>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    

    一直以来这样设置都没有问题

    ❗️但是,最近发现,自己App中的微信头像(微信登录返回的头像地址的http开头)无法加载显示,打印了错误发现是

    The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

    字面意思就是无法加载HTTP的图片。
    百度了很多都是说设置NSAllowsArbitraryLoads为true。但是我明明设置了,而且之前是可以的为什么最近不可以。因为自己最近换了微信头像,还以为和我换了头像有关系。。。。

    最后看到歪果兄dei说的一个答案。


    ios12无法加载HTTP的解决

    具体链接 --> stackoverflow.com

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>yourdomain.com</key>
            <dict>
                <key>NSExceptionAllowInsecureHTTPLoads</key>
                <true/>
            </dict>
        </dict>
        <key>NSAllowsArbitraryLoadsInWebContent</key>
        <true/>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    

    然后就可以了!!!

    如果还是不行可以这样

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>yourdomain.com</key>
            <dict>
                <key>NSExceptionAllowInsecureHTTPLoads</key>
                <true/>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <true/>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
            </dict>
        </dict>
        <key>NSAllowsArbitraryLoadsInWebContent</key>
        <true/>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    

    内容解释

    NSAllowsArbitraryLoads

    设置为TURE的话,就会使得除了开发者在NSExceptionDomains里面配置的域名以外所有的网络连接不受限制。

    NSAllowsArbitraryLoadsInWebContent

    如果你设置为TURE的话,系统会禁用对来自Web视图的请求的所有ATS限制,也就是你的WebView的请求不不一定需要HTTPS,APP就可以使用嵌入式浏览器来显示任意内容,但是应用的其他部分还是需要用ATS。

    NSExceptionDomains

    NSExceptionDomains其实是相当于NSAllowsArbitraryLoads的一个子集。后者是全局的作用,而前者主要是用于对某些域名的限制作用。他的主要作用其实就是用于们自签名的证书。

    NSExceptionDomains字典里面各键的值意义如下。
    • NSIncludesSubdomains

    默认为FALSE,如果设置为TURE,则表示当前设置域名的所有子域名也使用同样的配置

    • NSExceptionAllowInsecureHTTPLoads

    允许不安全的HTTP请求,这里所谓的不安全,不代表改变了 Transport Layer Security (TLS)或是事HTTPS的请求。所谓的不安全主要是因为使用自签名的证书,没有经过CA认证所以苹果并不知道是不是安全的,如果开发者允许那么苹果也允许加载。

    • NSExceptionRequiresForwardSecrecy

    默认值为TURE,如果设置为FALSE,则允许不支持完全前向保密(PFS)的TLS密码(对于指定的域名)。

    • NSTemporaryExceptionAllowsInsecureHTTPLoads

    默认值是FALSE,如果设置为TURE,则表示允许App进行不安全的HTTP请求


    好好学习,天天向上。<( ̄oo, ̄)/


    Potato_zero.jpg

    相关文章

      网友评论

        本文标题:iOS12 无法加载HTTP

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