一尘不染

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

tomcat

我在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,域均为空。为什么是这样?我问的原因是因为我在两个不同的域中都有一个具有相同名称的cookie,并且我希望能够根据域来区分它们。为了澄清这种情况,我在.anydomain.net和.subdomain.anydomain.net中设置了同名的cookie。两者都在请求中发送,但是当它们到达servlet时,域为空。servlet无法看到发送给它的cookie的域是否是预期的行为?

编辑:我在对Servlet的先前请求中将cookie连同域,过期和路径一起设置。使用这些cookie进入浏览器的下一个请求会将域显示为空。我已确认Cookie已在浏览器的正确域中设置。

编辑2:我正在使用Tomcat 6


阅读 255

收藏
2020-06-16

共1个答案

一尘不染

您确定可以从请求Cookie中获得除价值以外的任何东西吗?浏览器将仅在HTTP Cookie标头中发送name = value。

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

2020-06-16