Java Servlet API 2.5 Cookie.getDomain()始终返回null

我在Tomcat上使用Servlet API 2.5的Cookie类时遇到问题。 我从HttpServletRequest对象中提取cookie列表并迭代它们,如下所示:

Cookie[] cookies = request.getCookies(); for(Cookie cookie : cookies) { System.out.println("Name=" + cookie.getName() + " Domain=" + cookie.getDomain()); } 

但是,对于请求中的每个cookie,Domain为null。 为什么是这样? 我问的原因是因为我在两个不同的域中有一个同名的cookie,我希望能够根据域来区分它们。 为了帮助澄清这种情况,我的同名cookie被设置在.anydomain.net和.subdomain.anydomain.net中。 两者都在请求中发送,但域到达servlet时为null。 servlet无法看到发送给它的cookie域的预期行为吗?

编辑:我在之前的servlet请求中设置了cookie以及域,过期和路径。 使用这些cookie进入浏览器的下一个请求将域显示为null。 我已经validation了cookie已在浏览器中的正确域中设置。

编辑2:我正在使用Tomcat 6

除了请求cookie的价值之外,你确定你能得到任何东西吗? 浏览器将仅在HTTP Cookie标头中发送name = value。

其他属性(安全,域,路径,到期)仅适用于您自己设置到响应中的cookie。 它们用于创建Set-Cookie响应标头。

域等属性仅在cookie作为响应的一部分时使用(即在Set-Cookie标头中)。 客户端(例如Web浏览器)应该只发送具有正确域(路径等)的cookie。 因此,请求仅查看值,因为标头本身(Cookie)仅包含值。 您的客户端不应该将cookie从不同的域发送到服务器。