Default CookieManager
java.net.CookieManager提供了CookieHandler
的具体实现,对于大多数用户来说,足以处理 HTTP 状态 管理。 CookieManager
将 Cookie 的存储与围绕,接受和拒绝它们的策略分开。 CookieManager
用java.net.CookieStore和java.net.CookiePolicy初始化。 CookieStore
管理cookie 的存储。 CookiePolicy
制定有关 Cookie 接受和拒绝的 Policy 决策。
以下代码显示了如何创建和设置系统范围的 CookieManager:
java.net.CookieManager cm = new java.net.CookieManager();
java.net.CookieHandler.setDefault(cm);
第一行调用默认的CookieManager
构造函数来创建实例。第二行调用CookieHandler
的静态setDefault
方法来设置系统范围的处理程序。
默认的CookieManager
构造函数使用默认的 cookie 存储区并接受策略创建一个新的CookieManager
实例。 CookieStore
是存储任何接受的 HTTP cookie 的地方。如果在创建时未指定,则CookieManager
实例将使用内部内存实现。此实现不是持久性的,仅在 Java 虚拟机的生命周期内有效。需要永久存储的用户必须实现自己的存储。
CookieManager
使用的默认 cookie 策略是CookiePolicy.ACCEPT_ORIGINAL_SERVER
,它仅接受来自原始服务器的 cookie。因此,来自服务器的Set-Cookie
响应必须设置“域”属性,并且必须与 URL 中主机的域匹配。有关更多信息,请参见java.net.HttpCookie.domainMatches。需要其他策略的用户必须实现CookiePolicy
interface,并将其传递给CookieManager
构造函数,或者使用setCookiePolicy(cookiePolicy)
方法将其设置为已构造的CookieManager
实例。
从 Cookie 存储区中检索 Cookie 时,CookieManager
还将强制执行RFC 2965第 3.3.4 节中的路径匹配规则。因此,cookie 还必须设置其“ path”属性,以便在从 cookie 存储中检索 cookie 之前可以应用路径匹配规则。
总之,CookieManager
提供了用于处理 cookie 的框架,并为CookieStore
提供了一个很好的默认实现。 CookieManager
通过允许您设置自己的CookieStore
,CookiePolicy
或两者都可以高度自定义。