public final class SNIHostName extends SNIServerName
host_name
服务器名称(SNI)扩展。
如3节所述,“服务器名称指示”,对TLS Extensions (RFC 6066),“主机名”包含完全限定DNS主机名的服务器,通过客户端的理解。编码服务器名称值的主机名是表示为字节字符串使用ASCII编码没有尾随点。这允许的国际化域名(IDN)支持通过A标签的使用(兼容的ASCII编码(ACE)的国际化域名申请一个有效的字符串形式(IDNA))中定义的RFC 5890。
注意,SNIHostName
对象是不可变的。
SNIServerName
,
StandardConstants.SNI_HOST_NAME
Constructor and Description |
---|
SNIHostName(byte[] encoded)
创建使用指定的编码值的
SNIHostName 。
|
SNIHostName(String hostname)
使用指定的主机名创建一个
SNIHostName 。
|
Modifier and Type | Method and Description |
---|---|
static SNIMatcher |
createSNIMatcher(String regex)
创建一个对象
SNIHostName s
SNIMatcher 。
|
boolean |
equals(Object other)
将此服务器名称与指定的对象比较。
|
String |
getAsciiName()
返回该对象的
StandardCharsets.US_ASCII -compliant
SNIHostName 主机名。
|
int |
hashCode()
返回此
SNIHostName 哈希代码值。
|
String |
toString()
返回该对象的字符串表示形式,包括在这
SNIHostName 对象的DNS主机名。
|
getEncoded, getType
public SNIHostName(String hostname)
SNIHostName
。
注意,每RFC 6066,编码服务器名称值的主机名是StandardCharsets.US_ASCII
-compliant。在这种方法中,hostname
可以是一个用户友好的国际化域名(IDN)。IDN.toASCII(String, int)
用于在主机执行ASCII字符的限制(见RFC 3490,RFC 1122,RFC 1123)和翻译hostname
成ASCII兼容编码(ACE),作为:
IDN。toascii(主机名、域名。use_std3_ascii_rules);
的hostname
说法是违法的:
hostname
是空的,hostname
结束后点,hostname
不是有效的国际化域名(IDN)符合RFC 3490规范。hostname
-这个服务器名称的主机名
null
hostname
NullPointerException
IllegalArgumentException
-如果
hostname
是非法的
public SNIHostName(byte[] encoded)
SNIHostName
。
这种方法通常用于解析请求的SNI扩展编码名称值。
每RFC 6066,编码名称值的主机名是StandardCharsets.US_ASCII
-compliant。然而,在SNI扩展以前的版本(RFC 4366),编码的主机名是一种采用UTF-8编码的字节串。对于版本容错的目的,这种方法允许,encoded
论点的字符集可以StandardCharsets.UTF_8
,以及StandardCharsets.US_ASCII
。IDN.toASCII(String)
将encoded
论点为ASCII兼容编码(ACE)的主机名。
这是强烈建议这个构造函数是用来解析请求的SNI扩展编码名称值。否则,遵守RFC 6066,请始终使用StandardCharsets.US_ASCII
-compliant字符和ASCII字符的主机名的强制限制(见RFC 3490,RFC 1122,RFC 1123)为encoded
参数,或使用SNIHostName(String)
相反。
的encoded
说法是违法的:
encoded
是空的,encoded
结束后点,encoded
不StandardCharsets.US_ASCII
或StandardCharsets.UTF_8
-compliant字符集编码,encoded
不是有效的国际化域名(IDN)符合RFC 3490规范。需要注意的是,克隆以防止后续修改的encoded
字节数组。
encoded
-服务器名称编码的主机名
null
encoded
NullPointerException
IllegalArgumentException
-如果
encoded
是非法的
public String getAsciiName()
StandardCharsets.US_ASCII
-compliant
SNIHostName
主机名。
每RFC 6066,注意,返回的主机名可以是一个国际化域名包含A标签。看到有关的详细a-label规格的更多信息RFC 5890。
SNIHostName
对象的
StandardCharsets.US_ASCII
-compliant主机名
public boolean equals(Object other)
每RFC 6066,DNS主机名是不区分大小写。两个服务器主机名是平等的如果,仅仅是如果,他们具有相同的名称,类型,和主机名中的案例对比独立平等。
equals
方法重写,继承类
SNIServerName
other
-其他服务器名称的对象比较。
other
是等于此实例
Object.hashCode()
,
HashMap
public int hashCode()
SNIHostName
哈希代码值。
散列值是区分大小写的使用这个SNIHostName
主机产生。
hashCode
方法重写,继承类
SNIServerName
SNIHostName
哈希代码值。
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public String toString()
SNIHostName
对象的DNS主机名。
表示的确切细节是不确定的,并有变化,但下面的可能被视为典型的:
“类型= host_name(0),值= <主机名> ” 主机名>“ <主机名> ”是一个ASCII表示的主机名,其中可能包含A标签。例如,一个返回值的虚拟主机可能看起来像:
“类型= host_name(0),值= www.example .com”或
“类型= host_name(0),值= xn,fsqu00a。xn,0zwm56d”
请注意,表示的确切细节是不确定的,并有变化。
主机名>toString
方法重写,继承类
SNIServerName
public static SNIMatcher createSNIMatcher(String regex)
SNIHostName
s
SNIMatcher
。
此方法可由服务器用来验证可接受的SNIHostName
s。例如,
snimatcher匹配=snihostname。createSNIMatcher(“www \\。例如\\ .com”);将接受主机名”www.example .com”。
snimatcher匹配=snihostname。createSNIMatcher(“www \\。例如\\。(COM | org)”);会接受一些“www.example .com”和“www.example。“。
regex
代表主机的
regular expression pattern(S)相匹配
SNIMatcher
SNIHostName
s对象
null
regex
NullPointerException
PatternSyntaxException
如果正则表达式的语法是无效的
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.