我在使用Tomcat上的Servlet API 2.5的Cookie類時遇到問題。我拔出從HttpServletRequest對象的cookie的列表,並在它們之間迭代,像這樣:Java Servlet API 2.5 Cookie.getDomain()總是返回null
Cookie[] cookies = request.getCookies();
for(Cookie cookie : cookies) {
System.out.println("Name=" + cookie.getName() + " Domain=" + cookie.getDomain());
}
然而,在請求每一個cookie的域名爲空。爲什麼是這樣?我問的原因是因爲我在兩個不同的域名中擁有相同名稱的cookie,我希望能夠根據域名區分它們。爲了澄清這種情況,我在.anydomain.net和.subdomain.anydomain.net中設置了相同名稱的Cookie。兩者都在請求中發送,但域到達servlet時爲空。預計該servlet無法看到發送給它的cookie的域的行爲?
編輯:我在之前的servlet請求中設置了cookie,域,過期和路徑。使用這些cookie進入瀏覽器的下一個請求顯示域爲空。我已驗證Cookie正在設置在瀏覽器的正確域中。
編輯2:我使用的是Tomcat 6
您可以在setName()和setDomain()方法上設置斷點,以檢查servlet容器是否正確解析cookie標頭。你的cookie中有冒號(:)嗎?最近的一些Tomcat版本不接受大多數帶有冒號的cookie。 – akarnokd 2009-06-23 21:58:51