- java.lang.Object
-
- java.net.HttpCookie
-
- 实现的所有接口
-
Cloneable
public final class HttpCookie extends Object implements Cloneable
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.txtHttpCookie类可以接受所有这三种形式的语法。
- 从以下版本开始:
- 1.6
-
-
构造方法摘要
构造方法 构造器 描述 HttpCookie(String name, String value)
构造具有指定名称和值的cookie。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 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的discard属性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的端口列表,它限制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:”令牌。
-
-
-
构造方法详细信息
-
HttpCookie
public HttpCookie(String name, String value)
构造具有指定名称和值的cookie。该名称必须符合RFC 2965.这意味着它只能包含ASCII字母数字字符,不能包含逗号,分号或空格或以$字符开头。 创建后无法更改cookie的名称。
值可以是服务器选择发送的任何值。 它的值可能只对服务器感兴趣。 使用
setValue
方法创建cookie后,可以更改cookie的值。默认情况下,cookie是根据RFC 2965 cookie规范创建的。 可以使用
setVersion
方法更改版本。- 参数
-
name
- 指定cookie名称的String
-
value
- 指定cookie值的String
- 异常
-
IllegalArgumentException
- 如果cookie名称包含非法字符 -
NullPointerException
- 如果name
是null
- 另请参见:
-
setValue(java.lang.String)
,setVersion(int)
-
-
方法详细信息
-
parse
public static List<HttpCookie> parse(String header)
从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
public void setComment(String purpose)
指定描述cookie用途的注释。 如果浏览器将cookie提供给用户,则注释很有用。 Netscape Version 0 cookie不支持评论。- 参数
-
purpose
- 指定要显示给用户的注释的String
- 另请参见:
-
getComment()
-
getComment
public String getComment()
返回描述此cookie用途的注释,如果cookie没有注释,则返回null
。- 结果
-
一个
String
包含注释,或null
如果没有 - 另请参见:
-
setComment(java.lang.String)
-
setCommentURL
public void setCommentURL(String purpose)
指定描述cookie用途的注释URL。 如果浏览器将cookie提供给用户,则注释URL非常有用。 注释URL仅为RFC 2965。- 参数
-
purpose
- 指定要显示给用户的注释URL的String
- 另请参见:
-
getCommentURL()
-
getCommentURL
public String getCommentURL()
返回描述此cookie用途的注释URL,如果cookie没有注释URL,则返回null
。- 结果
-
一个
String
包含注释URL,或null
如果没有 - 另请参见:
-
setCommentURL(java.lang.String)
-
setDiscard
public void setDiscard(boolean discard)
指定用户代理是否应无条件地丢弃cookie。 这是RFC 2965唯一属性。- 参数
-
discard
-true
表示无条件地丢弃cookie - 另请参见:
-
getDiscard()
-
getDiscard
public boolean getDiscard()
返回cookie的discard属性- 结果
-
boolean
表示此cookie的discard属性 - 另请参见:
-
setDiscard(boolean)
-
setPortlist
public void setPortlist(String ports)
指定cookie的端口列表,它限制cookie可以在Cookie头中发送回的端口。- 参数
-
ports
- aString
指定端口列表,这是逗号分隔的数字系列 - 另请参见:
-
getPortlist()
-
getPortlist
public String getPortlist()
返回cookie的端口列表属性- 结果
-
a
String
包含端口列表,如果没有,String
包含null
- 另请参见:
-
setPortlist(java.lang.String)
-
setDomain
public void setDomain(String pattern)
指定应在其中显示此cookie的域。域名的形式由RFC 2965指定。域名以点(
.foo.com
)开头,表示cookie对指定域名系统(DNS)区域中的服务器可见(例如,www.foo.com
,但不是a.b.foo.com
)。 默认情况下,cookie仅返回发送它们的服务器。- 参数
-
pattern
- 包含可在其中String
此cookie的域名的String
; 表格是根据RFC 2965 - 另请参见:
-
getDomain()
-
getDomain
public String getDomain()
返回为此cookie设置的域名。 域名的形式由RFC 2965设置。- 结果
-
包含域名的
String
- 另请参见:
-
setDomain(java.lang.String)
-
setMaxAge
public void setMaxAge(long expiry)
以秒为单位设置cookie的最大年龄。正值表示cookie将在经过许多秒后过期。 请注意,该值是cookie过期时的最大年龄,而不是cookie的当前年龄。
负值表示cookie不会持久存储,并在Web浏览器退出时被删除。 零值会导致cookie被删除。
- 参数
-
expiry
- 一个整数,以秒为单位指定cookie的最大年龄; 如果为零,则应立即丢弃cookie; 否则,cookie的最大年龄未指定。 - 另请参见:
-
getMaxAge()
-
getMaxAge
public long getMaxAge()
返回cookie的最大年龄,以秒为单位指定。 默认情况下,-1
指示cookie将一直存在,直到浏览器关闭。- 结果
- 一个整数,以秒为单位指定cookie的最大年龄
- 另请参见:
-
setMaxAge(long)
-
setPath
public void setPath(String uri)
指定客户端应返回cookie的cookie的路径。cookie对于您指定的目录中的所有页面以及该目录的子目录中的所有页面都是可见的。 cookie的路径必须包含设置cookie的servlet,例如/ catalog ,这使得cookie对/ catalog下的服务器上的所有目录都可见。
有关设置cookie路径名的更多信息,请参阅RFC 2965(可在Internet上获得)。
- 参数
-
uri
- 指定路径的String
- 另请参见:
-
getPath()
-
getPath
public String getPath()
返回浏览器返回此cookie的服务器上的路径。 cookie对服务器上的所有子路径都是可见的。- 结果
-
String
指定包含servlet名称的路径,例如 / catalog - 另请参见:
-
setPath(java.lang.String)
-
setSecure
public void setSecure(boolean flag)
指示是否应仅使用安全协议(例如HTTPS或SSL)发送cookie。默认值为
false
。- 参数
-
flag
- 如果是true
,则cookie只能通过HTTPS等安全协议发送。 如果是false
,则可以通过任何协议发送。 - 另请参见:
-
getSecure()
-
getSecure
public boolean getSecure()
返回true
如果发送此cookie应该被限制在一个安全的协议,或false
如果它可以使用任何协议发送。- 结果
-
false
如果cookie可以通过任何标准协议发送; 否则,true
- 另请参见:
-
setSecure(boolean)
-
getName
public String getName()
返回cookie的名称。 创建后无法更改名称。- 结果
-
String
指定cookie的名称
-
setValue
public void setValue(String newValue)
创建cookie后,为cookie分配新值。 如果使用二进制值,则可能需要使用BASE64编码。对于版本0 cookie,值不应包含空格,括号,括号,等号,逗号,双引号,斜杠,问号,符号,冒号和分号。 在所有浏览器上,空值的行为可能不同。
- 参数
-
newValue
- 指定新值的String
- 另请参见:
-
getValue()
-
getValue
public String getValue()
返回cookie的值。- 结果
-
包含cookie现值的
String
- 另请参见:
-
setValue(java.lang.String)
-
getVersion
public int getVersion()
返回此cookie符合的协议版本。 版本1符合RFC 2965/2109,版本0符合Netscape起草的原始cookie规范。 浏览器提供的Cookie使用并识别浏览器的cookie版本。- 结果
- 如果cookie符合原始Netscape规范,则为0; 如果cookie符合RFC 2965/2109,则为1
- 另请参见:
-
setVersion(int)
-
setVersion
public void setVersion(int v)
设置此cookie符合的cookie协议的版本。 版本0符合原始Netscape cookie规范。 版本1符合RFC 2965/2109。- 参数
-
v
- 如果cookie应符合原始Netscape规范,v
0; 1如果cookie应符合RFC 2965/2109 - 异常
-
IllegalArgumentException
- 如果v
既不是0也不是1 - 另请参见:
-
getVersion()
-
isHttpOnly
public boolean isHttpOnly()
如果此cookie包含HttpOnly属性,则返回true
。 这意味着脚本引擎不应该访问cookie,例如javascript。- 结果
-
true
如果此cookie应被视为HTTPOnly - 另请参见:
-
setHttpOnly(boolean)
-
setHttpOnly
public void setHttpOnly(boolean httpOnly)
指示cookie是否应被视为仅HTTP。 如果设置为true
则意味着javascript等脚本引擎无法访问cookie。- 参数
-
httpOnly
- 如果true
仅使cookie成为HTTP,即仅作为HTTP请求的一部分可见。 - 另请参见:
-
isHttpOnly()
-
domainMatches
public static 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 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.
- 参数
-
domain
- 用于检查主机名的域名 -
host
- 相关主机名 - 结果
-
true
如果他们域匹配;false
如果没有
-
toString
public String toString()
构造此cookie的cookie头字符串表示形式,其格式由相应的cookie规范定义,但没有前导“Cookie:”令牌。
-
equals
public boolean equals(Object obj)
测试两个HTTP cookie的相等性。仅当两个cookie来自同一个域(不区分大小写),具有相同名称(不区分大小写)且具有相同路径(区分大小写)时,才会得到
true
。- 重写:
-
equals
在类Object
- 参数
-
obj
- 要与之比较的引用对象。 - 结果
-
true
如果两个HTTP cookie彼此相等; 否则,false
- 另请参见:
-
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()
返回此HTTP cookie的哈希码。 结果是此cookie的三个重要组件的哈希码值的总和:名称,域和路径。 也就是说,哈希码是表达式的值:getName().toLowerCase().hashCode()
+ getDomain().toLowerCase().hashCode()
+ getPath().hashCode()- 重写:
-
hashCode
在类Object
- 结果
- 这个HTTP cookie的哈希码
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
-