美文网首页
AlamofireImage设置忽略不受信任的https

AlamofireImage设置忽略不受信任的https

作者: 狂奔的胖蜗牛 | 来源:发表于2020-06-29 20:28 被阅读0次

    问题描述

    使用AlamofireImage下载图片,报了如下的错:

    Task <21B3A034-BFE5-4B71-B6A8-4B282C003E50>.<5> load failed with error Error Domain=NSURLErrorDomain Code=-1202 "此服务器的证书无效。您可能正在连接到一个伪装成“139.196.20.65”的服务器,这会威胁到您的机密信息的安全。" UserInfo={NSLocalizedRecoverySuggestion=您仍要连接此服务器吗?, _kCFStreamErrorDomainKey=3, NSErrorPeerCertificateChainKey=(
        "<cert(0x1053d2000) s: *.ecamzone.cc i: RapidSSL RSA CA 2018>",
        "<cert(0x1053b4600) s: RapidSSL RSA CA 2018 i: DigiCert Global Root CA>"
    ), NSErrorClientCertificateStateKey=0, NSErrorFailingURLKey=https://139.196.20.65:443/eques/icvss/alarm-pic-down?uid=b512182503d8a4584c1f01c0668c81ff&token=0FMkyu6D2R0c_7b69aa95cd7d43f3b47b040e25221792&fid=AhKeAQACIQAvcGljLzE1LzIwMjAwNjI5L0N1V1k1QzBZZjFoMC5qcGcBAAAAAAE&devid=51c30d03f3564268bb34395e18769abc, NSErrorFailingURLStringKey=https://139.196.20.65:443/eques/icvss/alarm-pic-down?uid=b512182503d8a4584c1f01c0668c81ff&token=0FMkyu6D2R0c_7b69aa95cd7d43f3b47b040e25221792&fid=AhKeAQACIQAvcGljLzE1LzIwMjAwNjI5L0N1V1k1QzBZZjFoMC5qcGcBAAAAAAE&devid=51c30d03f3564268bb34395e18769abc, NSUnderlyingError=0x28377b960 {Error Domain=kCFErrorDomainCFNetwork Code=-1202 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, kCFStreamPropertySSLPeerTrust=<SecTrustRef: 0x280b99f80>, _kCFNetworkCFStreamSSLErrorOriginalValue=-9843, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9843, kCFStreamPropertySSLPeerCertificates=(
        "<cert(0x1053d2000) s: *.ecamzone.cc i: RapidSSL RSA CA 2018>",
        "<cert(0x1053b4600) s: RapidSSL RSA CA 2018 i: DigiCert Global Root CA>"
    )}}, _NSURLErrorRelatedURLSessionTaskErrorKey=(
        "LocalDataTask <21B3A034-BFE5-4B71-B6A8-4B282C003E50>.<5>"
    ), _kCFStreamErrorCodeKey=-9843, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <21B3A034-BFE5-4B71-B6A8-4B282C003E50>.<5>, NSURLErrorFailingURLPeerTrustErrorKey=<SecTrustRef: 0x280b99f80>, NSLocalizedDescription=此服务器的证书无效。您可能正在连接到一个伪装成“139.196.20.65”的服务器,这会威胁到您的机密信息的安全。} [-1202]
    

    解决思路

    分析一下错误,可以肯定是访问了使用自签证书的https请求,但是我们使用的是第三方的图片,验证证书是不可能了,那只有忽略验证。所以解决办法就是设置AlamofireImage忽略验证。

    解决方法

    AlamofireImage依赖于Alamofire,也就是说最终下载图片那一步,使用的是Alamofire,所以,设置Alamofire忽略验证即可。但由于AlamofireImage设置了自己的下载器,所以,解决方法如下:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
            // 设置验证策略
            let sessionManager = SessionManager(
                configuration: ImageDownloader.defaultURLSessionConfiguration(),
                serverTrustPolicyManager: ServerTrustPolicyManager(
                    policies: ["139.196.20.65": .disableEvaluation]
                )
            )
            // 设置下载器
            UIImageView.af_sharedImageDownloader = ImageDownloader(sessionManager: sessionManager)
            ......
            return true
        }
    

    在AppDelegate中设置后,后续使用UIImageView.af_setImage()方法即可正常下载图片了。至此,问题解决。

    相关文章

      网友评论

          本文标题:AlamofireImage设置忽略不受信任的https

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