0

你能告诉我下面的代码是做什么的吗?从哪里获取主机名以及验证方法的目的是什么?

static {
    //for localhost testing only
    javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(
            new javax.net.ssl.HostnameVerifier(){

                public boolean verify(String hostname,
                                      javax.net.ssl.SSLSession sslSession) {
                    System.out.println(" hostname = " + hostname);
                    if (hostname.equals("localhost")) {
                        return true;
                    }
                    return false;
                }
            });
}
4

1 回答 1

2

当您连接到 HTTPS URL 时,目标站点会显示其证书,其中包含可以使用该证书的域列表。(见下图示例)。当您获得一个HttpsURLConnection

在您发布的代码中,您定义了HostnameVerifier在上述检查失败时调用的。如果您要连接的域是 localhost,则您允许连接设置继续。这允许您将任何证书用于https://localhost域中的服务。

在此处输入图像描述

于 2018-10-06T04:01:28.297 回答