Most visited

Recently visited

Added in API level 9

HttpCookie

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类可以接受所有这三种语法形式。

Summary

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没有评论,则返回 null

String getCommentURL()

返回描述此cookie用途的注释url,如果cookie没有注释url,则返回 null

boolean getDiscard()

返回cookie的丢弃属性

String getDomain()

返回为此cookie设置的域名。

long getMaxAge()

返回cookie的最大年龄,以秒为单位指定。

String getName()

返回cookie的名称。

String getPath()

返回浏览器返回此cookie的服务器上的路径。

String getPortlist()

返回cookie的端口列表属性

boolean getSecure()

返回 true如果发送此cookie应该被限制在一个安全的协议,或者 false如果它可以使用任何协议发送。

String getValue()

返回cookie的值。

int getVersion()

返回此cookie符合的协议版本。

boolean hasExpired()

报告这个http cookie是否已过期。

int hashCode()

返回这个http cookie的哈希码。

boolean isHttpOnly()

如果此cookie包含 HttpOnly属性,则返回 true

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

Public constructors

HttpCookie

Added in API level 9
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

也可以看看:

Public methods

clone

Added in API level 9
Object clone ()

创建并返回此对象的副本。

Returns
Object a clone of this http cookie

domainMatches

Added in API level 9
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

equals

Added in API level 9
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

getComment

Added in API level 9
String getComment ()

返回描述此cookie用途的注释,如果cookie没有评论,则返回 null

Returns
String a String containing the comment, or null if none

也可以看看:

getCommentURL

Added in API level 9
String getCommentURL ()

返回描述此cookie用途的注释url,如果cookie没有注释url,则返回 null

Returns
String a String containing the comment url, or null if none

也可以看看:

getDiscard

Added in API level 9
boolean getDiscard ()

返回cookie的丢弃属性

Returns
boolean a boolean to represent this cookie's discard attribute

也可以看看:

getDomain

Added in API level 9
String getDomain ()

返回为此cookie设置的域名。 域名的格式由RFC 2965设置。

Returns
String a String containing the domain name

也可以看看:

getMaxAge

Added in API level 9
long getMaxAge ()

返回cookie的最大年龄,以秒为单位指定。 默认情况下,表示Cookie的-1将持续到浏览器关闭。

Returns
long an integer specifying the maximum age of the cookie in seconds

也可以看看:

getName

Added in API level 9
String getName ()

返回cookie的名称。 该名称在创建后无法更改。

Returns
String a String specifying the cookie's name

getPath

Added in API level 9
String getPath ()

返回浏览器返回此cookie的服务器上的路径。 该cookie对服务器上的所有子路径都可见。

Returns
String a String specifying a path that contains a servlet name, for example, /catalog

也可以看看:

getPortlist

Added in API level 9
String getPortlist ()

返回cookie的端口列表属性

Returns
String a String contains the port list or null if none

也可以看看:

getSecure

Added in API level 9
boolean getSecure ()

返回 true如果发送此cookie应该被限制在一个安全的协议,或者 false如果它可以使用任何协议发送。

Returns
boolean false if the cookie can be sent over any standard protocol; otherwise, true

也可以看看:

getValue

Added in API level 9
String getValue ()

返回cookie的值。

Returns
String a String containing the cookie's present value

也可以看看:

getVersion

Added in API level 9
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

也可以看看:

hasExpired

Added in API level 9
boolean hasExpired ()

报告这个http cookie是否已过期。

Returns
boolean true to indicate this http cookie has expired; otherwise, false

hashCode

Added in API level 9
int hashCode ()

返回这个http cookie的哈希码。 结果是此Cookie的三个重要组件的哈希代码值的总和:名称,域和路径。 也就是说,哈希码是表达式的值:

getName().toLowerCase().hashCode()
+ getDomain().toLowerCase().hashCode()
+ getPath().hashCode()

Returns
int this http cookie's hash code

isHttpOnly

Added in API level 24
boolean isHttpOnly ()

如果此cookie包含HttpOnly属性,则返回true 这意味着cookie不应该被JavaScript等脚本引擎访问。

Returns
boolean true if this cookie should be considered http only.

也可以看看:

parse

Added in API level 9
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

setComment

Added in API level 9
void setComment (String purpose)

指定描述cookie用途的注释。 如果浏览器向用户显示cookie,则该评论很有用。 Netscape版本0 cookie不支持评论。

Parameters
purpose String: a String specifying the comment to display to the user

也可以看看:

setCommentURL

Added in API level 9
void setCommentURL (String purpose)

指定描述cookie用途的注释url。 如果浏览器向用户显示cookie,则注释网址很有用。 评论网址只是RFC 2965。

Parameters
purpose String: a String specifying the comment url to display to the user

也可以看看:

setDiscard

Added in API level 9
void setDiscard (boolean discard)

指定用户代理是否应无条件放弃Cookie。 这是RFC 2965唯一的属性。

Parameters
discard boolean: true indicates to discard cookie unconditionally

也可以看看:

setDomain

Added in API level 9
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

也可以看看:

setHttpOnly

Added in API level 24
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.

也可以看看:

setMaxAge

Added in API level 9
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.

也可以看看:

setPath

Added in API level 9
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

也可以看看:

setPortlist

Added in API level 9
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

也可以看看:

setSecure

Added in API level 9
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.

也可以看看:

setValue

Added in API level 9
void setValue (String newValue)

创建cookie后,为cookie分配一个新值。 如果您使用二进制值,则可能需要使用BASE64编码。

使用版本0 cookie时,值不应在符号,冒号和分号中包含空格,括号,括号,等号,逗号,双引号,斜线,问号。 在所有浏览器上,空值的行为可能不尽相同。

Parameters
newValue String: a String specifying the new value

也可以看看:

setVersion

Added in API level 9
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

也可以看看:

toString

Added in API level 9
String toString ()

构造此Cookie的Cookie头字符串表示形式,该形式采用相应的Cookie规范定义的格式,但没有前导的“Cookie:”标记。

Returns
String a string form of the cookie. The string has the defined format

Hooray!