public final class HttpCookie
extends Object
implements Cloneable
java.lang.Object | |
↳ | java.net.HttpCookie |
HttpCookie对象表示一个http cookie,它携带服务器和用户代理之间的状态信息。 Cookie被广泛采用来创建有状态会话。
有3个http cookie规范:
Netscape draft
RFC 2109 - http://www.ietf.org/rfc/rfc2109.txt
RFC 2965 - http://www.ietf.org/rfc/rfc2965.txt
HttpCookie类可以接受所有这三种语法形式。
Public constructors |
|
---|---|
HttpCookie(String name, String value) 构造一个具有指定名称和值的cookie。 |
Public methods |
|
---|---|
Object |
clone() 创建并返回此对象的副本。 |
static boolean |
domainMatches(String domain, String host) 检查主机名是否在域中的实用程序方法。 |
boolean |
equals(Object obj) 测试两个http cookie的相等性。 |
String |
getComment() 返回描述此cookie用途的注释,如果cookie没有评论,则返回 |
String |
getCommentURL() 返回描述此cookie用途的注释url,如果cookie没有注释url,则返回 |
boolean |
getDiscard() 返回cookie的丢弃属性 |
String |
getDomain() 返回为此cookie设置的域名。 |
long |
getMaxAge() 返回cookie的最大年龄,以秒为单位指定。 |
String |
getName() 返回cookie的名称。 |
String |
getPath() 返回浏览器返回此cookie的服务器上的路径。 |
String |
getPortlist() 返回cookie的端口列表属性 |
boolean |
getSecure() 返回 |
String |
getValue() 返回cookie的值。 |
int |
getVersion() 返回此cookie符合的协议版本。 |
boolean |
hasExpired() 报告这个http cookie是否已过期。 |
int |
hashCode() 返回这个http cookie的哈希码。 |
boolean |
isHttpOnly() 如果此cookie包含 HttpOnly属性,则返回 |
static List<HttpCookie> |
parse(String header) 从set-cookie或set-cookie2标题字符串构造cookie。 |
void |
setComment(String purpose) 指定描述cookie用途的注释。 |
void |
setCommentURL(String purpose) 指定描述cookie用途的注释url。 |
void |
setDiscard(boolean discard) 指定用户代理是否应无条件放弃Cookie。 |
void |
setDomain(String pattern) 指定应在其中呈现此Cookie的域。 |
void |
setHttpOnly(boolean httpOnly) 指示Cookie是否应被视为仅HTTP。 |
void |
setMaxAge(long expiry) 以秒为单位设置Cookie的最大使用年限。 |
void |
setPath(String uri) 指定客户端应该返回cookie的cookie的路径。 |
void |
setPortlist(String ports) 指定cookie的portlist,该cookie限制Cookie可以在Cookie标头中发回的cookie的端口。 |
void |
setSecure(boolean flag) 指示是否只应使用安全协议(例如HTTPS或SSL)发送Cookie。 |
void |
setValue(String newValue) 创建cookie后,为cookie分配一个新值。 |
void |
setVersion(int v) 设置此cookie符合的cookie协议的版本。 |
String |
toString() 构造此Cookie的Cookie头字符串表示形式,该形式采用相应的Cookie规范定义的格式,但没有前导的“Cookie:”标记。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
HttpCookie (String name, String value)
构造一个具有指定名称和值的cookie。
该名称必须符合RFC 2965.这意味着它只能包含ASCII字母数字字符,不能包含逗号,分号或空格或以$字符开头。 Cookie的名称在创建后无法更改。
该值可以是服务器选择发送的任何内容。 它的价值可能只对服务器有意义。 使用setValue
方法创建cookie后,可以更改cookie的值。
默认情况下,根据RFC 2965 cookie规范创建cookie。 该版本可以使用setVersion
方法进行更改。
Parameters | |
---|---|
name |
String : a String specifying the name of the cookie |
value |
String : a String specifying the value of the cookie |
Throws | |
---|---|
IllegalArgumentException |
if the cookie name contains illegal characters or it is one of the tokens reserved for use by the cookie protocol |
NullPointerException |
if name is null |
也可以看看:
boolean domainMatches (String domain, String host)
检查主机名是否在域中的实用程序方法。
这个概念在cookie规范中有描述。 为了理解这个概念,首先需要定义一些术语:
effective host name = hostname if host name contains dot
or = hostname.local if not
在以下情况下,主机A的域名与主机B匹配:
- their host name strings string-compare equal; or
- A is a HDN string and has the form NB, where N is a non-empty name string, B has the form .B', and B' is a HDN string. (So, x.y.com domain-matches .Y.com but not Y.com.)
如果以下情况,主机不在域中(RFC 2965 sec。3.3.2):
- The value for the Domain attribute contains no embedded dots, and the value is not .local.
- The effective host name that derives from the request-host does not domain-match the Domain attribute.
- The request-host is a HDN (not IP address) and has the form HD, where D is the value of the Domain attribute, and H is a string that contains one or more dots.
例子:
- A Set-Cookie2 from request-host y.x.foo.com for Domain=.foo.com would be rejected, because H is y.x and contains a dot.
- A Set-Cookie2 from request-host x.foo.com for Domain=.foo.com would be accepted.
- A Set-Cookie2 with Domain=.com or Domain=.com., will always be rejected, because there is no embedded dot.
- A Set-Cookie2 with Domain=ajax.com will be accepted, and the value for Domain will be taken to be .ajax.com, because a dot gets prepended to the value.
- A Set-Cookie2 from request-host example for Domain=.local will be accepted, because the effective host name for the request- host is example.local, and example.local domain-matches .local.
Parameters | |
---|---|
domain |
String : the domain name to check host name with |
host |
String : the host name in question |
Returns | |
---|---|
boolean |
true if they domain-matches; false if not |
boolean equals (Object obj)
测试两个http cookie的相等性。
仅当两个cookie来自同一个域(不区分大小写),具有相同名称(不区分大小写)并且路径相同(区分大小写)时,结果为 true 。
Parameters | |
---|---|
obj |
Object : the reference object with which to compare. |
Returns | |
---|---|
boolean |
true if 2 http cookies equal to each other; otherwise, false |
String getComment ()
返回描述此cookie用途的注释,如果cookie没有评论,则返回 null
。
Returns | |
---|---|
String |
a String containing the comment, or null if none |
也可以看看:
String getCommentURL ()
返回描述此cookie用途的注释url,如果cookie没有注释url,则返回 null
。
Returns | |
---|---|
String |
a String containing the comment url, or null if none |
也可以看看:
boolean getDiscard ()
返回cookie的丢弃属性
Returns | |
---|---|
boolean |
a boolean to represent this cookie's discard attribute |
也可以看看:
String getDomain ()
返回为此cookie设置的域名。 域名的格式由RFC 2965设置。
Returns | |
---|---|
String |
a String containing the domain name |
也可以看看:
long getMaxAge ()
返回cookie的最大年龄,以秒为单位指定。 默认情况下,表示Cookie的-1
将持续到浏览器关闭。
Returns | |
---|---|
long |
an integer specifying the maximum age of the cookie in seconds |
也可以看看:
String getName ()
返回cookie的名称。 该名称在创建后无法更改。
Returns | |
---|---|
String |
a String specifying the cookie's name |
String getPath ()
返回浏览器返回此cookie的服务器上的路径。 该cookie对服务器上的所有子路径都可见。
Returns | |
---|---|
String |
a String specifying a path that contains a servlet name, for example, /catalog |
也可以看看:
String getPortlist ()
返回cookie的端口列表属性
Returns | |
---|---|
String |
a String contains the port list or null if none |
也可以看看:
boolean getSecure ()
返回 true
如果发送此cookie应该被限制在一个安全的协议,或者 false
如果它可以使用任何协议发送。
Returns | |
---|---|
boolean |
false if the cookie can be sent over any standard protocol; otherwise, true |
也可以看看:
String getValue ()
返回cookie的值。
Returns | |
---|---|
String |
a String containing the cookie's present value |
也可以看看:
int getVersion ()
返回此cookie符合的协议版本。 版本1符合RFC 2965/2109,版本0符合由Netscape起草的原始cookie规范。 浏览器提供的Cookie使用并识别浏览器的Cookie版本。
Returns | |
---|---|
int |
0 if the cookie complies with the original Netscape specification; 1 if the cookie complies with RFC 2965/2109 |
也可以看看:
boolean hasExpired ()
报告这个http cookie是否已过期。
Returns | |
---|---|
boolean |
true to indicate this http cookie has expired; otherwise, false |
int hashCode ()
返回这个http cookie的哈希码。 结果是此Cookie的三个重要组件的哈希代码值的总和:名称,域和路径。 也就是说,哈希码是表达式的值:
getName().toLowerCase().hashCode()
+ getDomain().toLowerCase().hashCode()
+ getPath().hashCode()
Returns | |
---|---|
int |
this http cookie's hash code |
boolean isHttpOnly ()
如果此cookie包含HttpOnly属性,则返回true
。 这意味着cookie不应该被JavaScript等脚本引擎访问。
Returns | |
---|---|
boolean |
true if this cookie should be considered http only. |
也可以看看:
List<HttpCookie> parse (String header)
从set-cookie或set-cookie2标题字符串构造cookie。 RFC 2965第3.2.2节set-cookie2语法表明一个标题行可能包含多个cookie定义,因此这是一个静态实用程序方法,而不是另一个构造函数。
Parameters | |
---|---|
header |
String : a String specifying the set-cookie header. The header should start with "set-cookie", or "set-cookie2" token; or it should have no leading token at all. |
Returns | |
---|---|
List<HttpCookie> |
a List of cookie parsed from header line string |
Throws | |
---|---|
IllegalArgumentException |
if header string violates the cookie specification's syntax, or the cookie name contains llegal characters, or the cookie name is one of the tokens reserved for use by the cookie protocol |
NullPointerException |
if the header string is null |
void setComment (String purpose)
指定描述cookie用途的注释。 如果浏览器向用户显示cookie,则该评论很有用。 Netscape版本0 cookie不支持评论。
Parameters | |
---|---|
purpose |
String : a String specifying the comment to display to the user |
也可以看看:
void setCommentURL (String purpose)
指定描述cookie用途的注释url。 如果浏览器向用户显示cookie,则注释网址很有用。 评论网址只是RFC 2965。
Parameters | |
---|---|
purpose |
String : a String specifying the comment url to display to the user |
也可以看看:
void setDiscard (boolean discard)
指定用户代理是否应无条件放弃Cookie。 这是RFC 2965唯一的属性。
Parameters | |
---|---|
discard |
boolean : true indicates to discard cookie unconditionally |
也可以看看:
void setDomain (String pattern)
指定应在其中呈现此Cookie的域。
域名的格式由RFC 2965指定。域名以点开头( .foo.com
),表示该cookie对指定域名系统(DNS)区域中的服务器可见(例如, www.foo.com
,但不包括a.b.foo.com
)。 默认情况下,Cookie只会返回给发送它们的服务器。
Parameters | |
---|---|
pattern |
String : a String containing the domain name within which this cookie is visible; form is according to RFC 2965 |
也可以看看:
void setHttpOnly (boolean httpOnly)
指示Cookie是否应被视为仅HTTP。 如果设置为true
这意味着cookie不应该可以通过JavaScript等脚本引擎访问。
Parameters | |
---|---|
httpOnly |
boolean : if true make the cookie HTTP only, i.e. only visible as part of an HTTP request. |
也可以看看:
void setMaxAge (long expiry)
以秒为单位设置Cookie的最大使用年限。
一个正值表示该cookie将在经过许多秒后过期。 请注意,此值是Cookie到期时的最大年龄,而不是Cookie的当前年龄。
负值意味着cookie不会永久存储,并且在Web浏览器退出时将被删除。 零值会导致Cookie被删除。
Parameters | |
---|---|
expiry |
long : an integer specifying the maximum age of the cookie in seconds; if zero, the cookie should be discarded immediately; otherwise, the cookie's max age is unspecified. |
也可以看看:
void setPath (String uri)
指定客户端应该返回cookie的cookie的路径。
该Cookie对于您指定的目录中的所有页面以及该目录子目录中的所有页面均可见。 Cookie的路径必须包含设置cookie的servlet,例如/ catalog ,这使得cookie在/ catalog下的服务器上的所有目录都可见。
有关设置Cookie路径名的更多信息,请参阅RFC 2965(可在Internet上获得)。
Parameters | |
---|---|
uri |
String : a String specifying a path |
也可以看看:
void setPortlist (String ports)
指定cookie的portlist,该cookie限制Cookie可以在Cookie标头中发回的cookie的端口。
Parameters | |
---|---|
ports |
String : a String specify the port list, which is comma seperated series of digits |
也可以看看:
void setSecure (boolean flag)
指示是否只应使用安全协议(例如HTTPS或SSL)发送Cookie。
默认值是 false
。
Parameters | |
---|---|
flag |
boolean : If true , the cookie can only be sent over a secure protocol like https. If false , it can be sent over any protocol. |
也可以看看:
void setValue (String newValue)
创建cookie后,为cookie分配一个新值。 如果您使用二进制值,则可能需要使用BASE64编码。
使用版本0 cookie时,值不应在符号,冒号和分号中包含空格,括号,括号,等号,逗号,双引号,斜线,问号。 在所有浏览器上,空值的行为可能不尽相同。
Parameters | |
---|---|
newValue |
String : a String specifying the new value |
也可以看看:
void setVersion (int v)
设置此cookie符合的cookie协议的版本。 版本0符合最初的Netscape cookie规范。 版本1符合RFC 2965/2109。
Parameters | |
---|---|
v |
int : 0 if the cookie should comply with the original Netscape specification; 1 if the cookie should comply with RFC 2965/2109 |
Throws | |
---|---|
IllegalArgumentException |
if v is neither 0 nor 1 |
也可以看看:
String toString ()
构造此Cookie的Cookie头字符串表示形式,该形式采用相应的Cookie规范定义的格式,但没有前导的“Cookie:”标记。
Returns | |
---|---|
String |
a string form of the cookie. The string has the defined format |