Alamofire + Moya 忽略 HTTPS 证书验证

class YSNetManager: MoyaProvider <YSNetTargetType> {
    
    static let sharedInstance: YSNetManager = YSNetManager()
    
    init() {    
        // 过滤证书,指定域名
        // DefaultTrustEvaluator 默认策略,只有合法证书才能通过验证
        // RevocationTrustEvaluator 对注销证书做的一种额外设置
        // PinnedCertificatesTrustEvaluator 证书验证模式,代表客户端会将服务器返回的证书和本地保存的证书中的 所有内容 全部进行校验,如果正确,才继续执行。
        // PublicKeysTrustEvaluator 公钥验证模式,代表客户端会将服务器返回的证书和本地保存的证书中的
        // DisabledTrustEvalutor 该选项下验证一直都是通过的,无条件信任。
        // CompositeTrustEvalutor 自定义验证,需要返回一个布尔类型的结果
        let serverTrustManager = ServerTrustManager(allHostsMustBeEvaluated: false,
                                                    evaluators: ["xx.xx.xx": DisabledTrustEvaluator()])
        
        let configuration = URLSessionConfiguration.default
        configuration.headers = .default
        
        let session = Session(configuration: configuration,
                              startRequestsImmediately: false,
                              serverTrustManager: serverTrustManager)
        
        // 设置最大请求数量
        session.session.configuration.httpMaximumConnectionsPerHost = 10
        // 开启 MPTCP,允许在一条 TCP 链路中建立多个子通道,因此 MPTCP 可以让用户在切换网络环境的时候,不需要重新建立 TCP 链接;
        // none :不启用,默认选项
        // handover :优先考虑的是链接的可靠性。只有在 Wi-Fi 信号不好的时候,才会走 Cellular
        // interactive :优先考虑的是链接的低延时。系统会看 Wi-Fi 快还是 Cellular 快。如果 Cellular 比 Wi-Fi 快,哪怕此时 Wi-Fi 信号很好,系统也会把流量切到 Cellular 链路
        // aggregate :在这种模式下,Wi-Fi 和 Cellular 会同时起作用。如果 Wi-Fi 是 1G 带宽,Cellular 也是 1G 带宽,那么你的设备就能享受 2G 带宽(只能在开发者模式下使用)
        session.session.configuration.multipathServiceType = .handover
        super.init(session: session,
                   plugins: [YSNetPlugin()])   
    }
}

但是一般情况下不建议将 HTTPS 证书验证关闭

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容