Java Servlet API 2.5 Cookie.getDomain() 总是返回 null

标签 java tomcat servlets cookies

我在 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

最佳答案

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

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

关于Java Servlet API 2.5 Cookie.getDomain() 总是返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1035356/

相关文章:

java - 如何在 Apache tomcat 服务器启动时定期运行 javascript 函数而不是使用 ScheduledExecutorService 的 java 类?

apache 2.4 AJP 代理不工作

java - 如何从 doPost() 获取和使用 jsp 文件中的 java 对象?

java - Spring MVC 应用程序中相对 URL 的正确基础是什么?

multithreading - 我可以从 servlet 生成一个线程吗?

c# - 为什么 C# 中不包含 Java "throws"子句(在方法声明中)?

java - 如何添加聊天颜色?

java - 在 JavaEE 中对 URLConnection 使用当前用户身份验证

java - tomcat应用程序未启动的maven项目错误

java - 将自定义属性定义为数据对象