使用IP通过HTTPS连接到服务器:此服务器的证书无效

时间:2019-07-01 12:20:27

标签: swift https

当我通过HTTPS连接到服务器时,有时会收到DNS错误(无法将域转换为IP地址)。

我想处理此错误,然后直接通过IP重新连接到服务器。

问题是,当我通过IP连接时,出现类似以下错误:

  

错误域= NSURLErrorDomain代码= -1202”   服务器无效。您可能是“ 12.456.789.12”,这可能是您的   信息。

是的,服务器上有一个证书,但它与域名绑定!

我有一个类似的Android应用,并且通过单独添加域验证程序解决了该问题:

connection.setHostnameVerifier(new HostnameVerifier() {
    @Override
    public boolean verify(String hostname, SSLSession session) {
        HostnameVerifier hv = HttpsURLConnection.getDefaultHostnameVerifier();
        return hv.verify("example.com", session);
    }
});

我可以通过IP连接到服务器并避免证书问题吗(例如,就像在Android应用程序中所做的那样)?

我的代码:

let url = URL(string: "https://example.com/api/")
URLSession.shared.dataTask(with: url) { (data, response, error) in
    // Reconnect by IP
    if let value = error as NSError?, value.domain == NSURLErrorDomain {
        let url = URL(string: "https://12.456.789.12:443/api/")
        URLSession.shared.dataTask(with: url) { (data, response, error) in

            // TODO: Processing data received from the server

        }.resume()

        // TODO: Processing data received from the server

    }.resume()

0 个答案:

没有答案