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

ben*_*enw 15 java cookies tomcat servlets

我在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());
}
Run Code Online (Sandbox Code Playgroud)

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

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

编辑2:我正在使用Tomcat 6

Thi*_*ilo 23

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

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


Kat*_*one 7

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