iOS 加载http路径的方法
  DD354Jn8Rnpf 2023年11月02日 91 0

1、在iOS 9的时候,默认非https的网络是被禁止的,我们可以在info.plist文件中添加NSAppTransportSecurity字典,将NSAllowsArbitraryLoads设置为YES来禁用ATS;

iOS 加载http路径的方法_iOS

2、添加代码

在AppDelegate中实现以下方法

Swift:

extension NSURLRequest{

static func allowsAnyHTTPSCertificateForHost(host:String) ->Bool{

return true

}

}

Objective-C:

@implementation NSURLRequest(NSURLRequestWithIgnoreSSL)

+(BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host

{

returnYES;

}

@end

3、可以通过NSExceptionDomains设置白名单的方式来针对特定的域名来开放http内容来通过审核,简单理解:把不支持https协议的接口设置成http的接口。

如下设置:

iOS 加载http路径的方法_iOS_02

或者:

<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>

注意:每个需添加的域都需要设置此三个属性。如果请求的网络图片是http,也是需要设置的图片的域。

4、对于网页浏览和视频播放的行为,iOS 10中新加入了NSAllowsArbitraryLoadsInWebContent键。通过将它设置为YES,可以让app中的WKWebView和使用AVFoundation播放的在线视频不受ATS的限制。这也应该是绝大多数使用了相关特性的app的选择。

注意,内容解析:

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请求。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

DD354Jn8Rnpf