- 所有实现的接口:
-
Cloneable
有3种HTTP cookie规范:
Netscape草案
RFC 2109 - http://www.ietf.org/rfc/rfc2109.txt
RFC 2965 - http://www.ietf.org/rfc/rfc2965.txt
HttpCookie类可以接受这3种形式的语法。
- 自从:
- 1.6
- 外部规范
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionclone()
创建并返回此对象的副本。static boolean
domainMatches
(String domain, String host) 检查主机名是否在域中的实用方法。boolean
测试两个HTTP cookie的相等性。返回描述此cookie目的的注释,如果cookie没有注释则返回null
。返回描述此cookie目的的注释URL,如果cookie没有注释URL则返回null
。boolean
返回cookie的丢弃属性。返回为此cookie设置的域名。long
返回cookie的最大年龄,以秒为单位指定。getName()
返回cookie的名称。getPath()
返回浏览器返回此cookie的服务器上的路径。返回cookie的端口列表属性。boolean
如果应限制发送此cookie到安全协议,则返回true
,否则返回false
。getValue()
返回cookie的值。int
返回此cookie遵循的协议版本。boolean
报告此HTTP cookie是否已过期。int
hashCode()
返回此HTTP cookie的哈希码。boolean
如果此cookie包含HttpOnly属性,则返回true
。static List
<HttpCookie> 从set-cookie或set-cookie2头字符串构造cookie。void
setComment
(String purpose) 指定描述cookie目的的注释。void
setCommentURL
(String purpose) 指定描述cookie目的的注释URL。void
setDiscard
(boolean discard) 指定用户代理是否应无条件丢弃cookie。void
指定应呈现此cookie的域。void
setHttpOnly
(boolean httpOnly) 指示cookie是否应被视为仅HTTP。void
setMaxAge
(long expiry) 设置cookie的最大年龄(以秒为单位)。void
为客户端应返回cookie的路径指定路径。void
setPortlist
(String ports) 指定cookie的端口列表,限制可以在Cookie头中发送回的端口。void
setSecure
(boolean flag) 指示cookie是否只能使用安全协议发送,如HTTPS或SSL。void
在创建cookie后为cookie分配新值。void
setVersion
(int v) 设置此cookie遵循的cookie协议版本。toString()
构造此cookie的cookie头字符串表示形式,格式由相应的cookie规范定义,但不包括前导的"Cookie:"标记。
-
Constructor Details
-
HttpCookie
构造具有指定名称和值的cookie。名称必须符合RFC 2965。这意味着它只能包含ASCII字母数字字符,不能包含逗号、分号或空格,也不能以$字符开头。创建后无法更改cookie的名称。
值可以是服务器选择发送的任何内容。其值可能只对服务器感兴趣。可以使用
setValue
方法在创建后更改cookie的值。默认情况下,cookie根据RFC 2965 cookie规范创建。版本可以使用
setVersion
方法更改。- 参数:
-
name
- 指定cookie的名称的String
-
value
- 指定cookie的值的String
- 抛出:
-
IllegalArgumentException
- 如果cookie名称包含非法字符 -
NullPointerException
- 如果name
为null
- 参见:
-
-
Method Details
-
parse
从set-cookie或set-cookie2头字符串构造cookie。RFC 2965第3.2.2节set-cookie2语法指示一行头可能包含多个cookie定义,因此这是一个静态实用方法,而不是另一个构造函数。- 参数:
-
header
- 指定set-cookie头的String
。头应以"set-cookie"或"set-cookie2"标记开头;或者根本没有前导标记。 - 返回:
- 从头行字符串解析的cookie列表
- 抛出:
-
IllegalArgumentException
- 如果头字符串违反cookie规范的语法或cookie名称包含非法字符。 -
NullPointerException
- 如果头字符串为null
-
hasExpired
public boolean hasExpired()报告此HTTP cookie是否已过期。- 返回:
-
true
表示此HTTP cookie已过期;否则,返回false
-
setComment
指定描述cookie目的的注释。如果浏览器向用户呈现cookie,则注释很有用。 Netscape版本0 cookie不支持注释。- 参数:
-
purpose
- 指定要显示给用户的注释的String
- 参见:
-
getComment
返回描述此cookie目的的注释,如果cookie没有注释则返回null
。- 返回:
-
包含注释的
String
,如果没有则返回null
- 参见:
-
setCommentURL
指定描述cookie目的的注释URL。如果浏览器向用户呈现cookie,则注释URL很有用。仅适用于RFC 2965。- 参数:
-
purpose
- 指定要显示给用户的注释URL的String
- 参见:
-
getCommentURL
返回描述此cookie目的的注释URL,如果cookie没有注释URL则返回null
。- 返回:
-
包含注释URL的
String
,如果没有则返回null
- 参见:
-
setDiscard
public void setDiscard(boolean discard) 指定用户代理是否应无条件丢弃cookie。仅适用于RFC 2965。- 参数:
-
discard
-true
表示无条件丢弃cookie - 参见:
-
getDiscard
public boolean getDiscard()返回cookie的丢弃属性。- 返回:
-
一个
boolean
表示此cookie的丢弃属性 - 参见:
-
setPortlist
指定cookie的端口列表,限制可以在Cookie头中发送回的端口。- 参数:
-
ports
- 指定端口列表的String
,逗号分隔的数字系列 - 参见:
-
getPortlist
返回cookie的端口列表属性。- 返回:
-
包含端口列表的
String
,如果没有则返回null
- 参见:
-
setDomain
指定应呈现此cookie的域。域名的形式由RFC 2965指定。域名以点号(
.foo.com
)开头,表示cookie对指定域名系统(DNS)区域中的服务器可见(例如,www.foo.com
,但不包括a.b.foo.com
)。默认情况下,cookie仅返回给发送它们的服务器。- 参数:
-
pattern
- 包含此cookie可见的域名的String
;形式根据RFC 2965规定 - 参见:
-
getDomain
返回为此cookie设置的域名。域名的形式由RFC 2965设置。- 返回:
-
包含域名的
String
- 参见:
-
setMaxAge
public void setMaxAge(long expiry) 设置cookie的最大存活时间,单位为秒。正值表示cookie将在指定秒数后过期。请注意,该值是cookie将过期的最大年龄,而不是cookie的当前年龄。
负值表示cookie不会被持久存储,并且将在Web浏览器退出时被删除。零值会导致cookie被删除。
- 参数:
-
expiry
- 一个整数,指定cookie的最大存活时间(秒);如果为零,则应立即丢弃cookie;否则,cookie的最大年龄未指定。 - 参见:
-
getMaxAge
public long getMaxAge()返回cookie的最大存活时间,以秒为单位。默认情况下,返回-1
表示cookie将持久存在直到浏览器关闭。- 返回:
- 一个整数,指定cookie的最大存活时间(秒)
- 参见:
-
setPath
指定客户端应返回cookie的路径。cookie对您指定目录中的所有页面可见,以及该目录的子目录中的所有页面。cookie的路径必须包括设置cookie的servlet,例如,/catalog,这将使cookie对/catalog下服务器上的所有目录可见。
请参阅RFC 2965(可在互联网上找到)以获取有关为cookie设置路径名称的更多信息。
- 参数:
-
uri
- 指定路径的String
- 参见:
-
getPath
返回浏览器返回此cookie的服务器路径。cookie对服务器上的所有子路径可见。- 返回:
-
包含servlet名称的路径的
String
,例如,/catalog - 参见:
-
setSecure
public void setSecure(boolean flag) 指示是否仅使用安全协议(如HTTPS或SSL)发送cookie。默认值为
false
。- 参数:
-
flag
- 如果为true
,则cookie只能通过安全协议(如HTTPS)发送。如果为false
,则可以通过任何协议发送。 - 参见:
-
getSecure
public boolean getSecure()如果发送此cookie应限制为安全协议,则返回true
;如果可以使用任何协议发送,则返回false
。- 返回:
-
如果cookie可以通过任何标准协议发送,则返回
false
;否则返回true
- 参见:
-
getName
返回cookie的名称。创建后名称不可更改。- 返回:
-
指定cookie名称的
String
-
setValue
在创建cookie后为其分配新值。如果使用二进制值,可能需要使用BASE64编码。对于版本0的cookie,值不应包含空格、括号、等号、逗号、双引号、斜杠、问号、at符号、冒号和分号。空值在所有浏览器上的行为可能不同。
- 参数:
-
newValue
- 指定新值的String
- 参见:
-
getValue
返回cookie的值。- 返回:
-
包含cookie当前值的
String
- 参见:
-
getVersion
public int getVersion()返回此cookie遵循的协议版本。版本1遵循RFC 2965/2109,版本0遵循Netscape起草的原始cookie规范。由浏览器提供的cookie使用并标识浏览器的cookie版本。- 返回:
- 如果cookie遵循原始Netscape规范,则返回0;如果cookie遵循RFC 2965/2109,则返回1
- 参见:
-
setVersion
public void setVersion(int v) 设置此cookie遵循的协议版本。版本0遵循原始Netscape cookie规范。版本1遵循RFC 2965/2109。- 参数:
-
v
- 如果cookie应遵循原始Netscape规范,则为0;如果cookie应遵循RFC 2965/2109,则为1 - 抛出:
-
IllegalArgumentException
- 如果v
既不是0也不是1 - 参见:
-
isHttpOnly
public boolean isHttpOnly()如果此cookie包含HttpOnly属性,则返回true
。这意味着cookie不应该对脚本引擎(如JavaScript)可见。- 返回:
-
如果此cookie应被视为HTTPOnly,则返回
true
- 参见:
-
setHttpOnly
public void setHttpOnly(boolean httpOnly) 指示是否应将cookie视为HTTP Only。如果设置为true
,这意味着cookie不应该对脚本引擎(如JavaScript)可见。- 参数:
-
httpOnly
- 如果为true
,则使cookie成为HTTP Only,即仅作为HTTP请求的一部分可见。 - 参见:
-
domainMatches
检查主机名是否属于域名的实用方法。此概念在cookie规范中有描述。要理解该概念,首先需要定义一些术语:
有效主机名 = 如果主机名包含点,则为主机名
否则为主机名.local如果主机A的名称与主机B的名称匹配,则主机A的名称与主机B的名称匹配:
- 它们的主机名字符串相等;或
- A是HDN字符串,并且具有形式NB的形式,其中N是非空名称字符串,B具有形式.B',B'是HDN字符串。(因此,x.y.com与.Y.com匹配,但与Y.com不匹配。)
如果主机不在域中(RFC 2965第3.3.2节):
- 域属性的值不包含嵌入的点,并且该值不是.local。
- 从请求主机派生的有效主机名与域属性不匹配。
- 请求主机是HDN(不是IP地址),并且具有HD形式,其中D是域属性的值,H是包含一个或多个点的字符串。
示例:
- 来自请求主机y.x.foo.com的Set-Cookie2,域为.foo.com,将被拒绝,因为H为y.x,包含一个点。
- 来自请求主机x.foo.com的Set-Cookie2,域为.foo.com,将被接受。
- 具有域为.com或域为.com.的Set-Cookie2将始终被拒绝,因为没有嵌入的点。
- 具有域为.local的Set-Cookie2,来自请求主机example,将被接受,因为请求主机的有效主机名为example.local,example.local与.local匹配。
- 参数:
-
domain
- 用于检查主机名的域名 -
host
- 待检查的主机名 - 返回:
-
如果它们匹配域名,则返回
true
;否则返回false
-
toString
构造此cookie的cookie头字符串表示形式,格式符合相应cookie规范,但不包含前导的"Cookie:"标记。 -
equals
测试两个HTTP cookie是否相等。仅当两个cookie来自相同域(不区分大小写)、具有相同名称(不区分大小写)和相同路径(区分大小写)时,结果为
true
。 -
hashCode
public int hashCode()返回此HTTP cookie的哈希码。结果是此cookie的三个重要组件的哈希码值之和:名称、域和路径。即,哈希码是以下表达式的值:getName().toLowerCase().hashCode()
+ getDomain().toLowerCase().hashCode()
+ getPath().hashCode() -
clone
创建并返回此对象的副本。
-