1

我有 3 个baseURL,这 3 个有不同的 ssl 证书,我已经下载了一个证书并在 Xcode 项目中硬编码,即使我更改了url请求,应用程序不会阻止请求。

我正在使用这个类

class APIManager {

    static let sharedInstance = APIManager()
    private var manager : SessionManager?
    func sessionManager() -> SessionManager {

        if let manage = self.manager {
            return manage
        }
        else {
            let serverTrustpolicies: [ String: ServerTrustPolicy] = ["url" : .pinPublicKeys(publicKeys: ServerTrustPolicy.publicKeys(), validateCertificateChain: true, validateHost: true)
            ]

            self.manager = SessionManager(
                serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustpolicies)
            )
            let configuration = URLSessionConfiguration.default
            configuration.timeoutIntervalForRequest = 30
            self.manager = SessionManager(configuration: configuration)
            return self.manager!
        }

    }
}

APIManager.sharedInstance.sessionManager().upload(multipartFormData: { (multipartFormData)
}

任何人都可以解释实施吗?

4

1 回答 1

0

您必须ServerTrustPolicy为要验证的每个主机显式设置值。因此,当您创建策略字典时,您需要传递每个主机。

let serverTrustPolicies: [String: ServerTrustPolicy] = ["url" : .pinPublicKeys(publicKeys: ServerTrustPolicy.publicKeys(), validateCertificateChain: true, validateHost: true)]

这应该添加了您的其他基本 URL,并设置了适当的策略。

于 2019-04-11T19:55:45.790 回答