Javaservlet/JSP Cookie断开连接

Javaservlet/JSP Cookie断开连接,java,jsp,cookies,Java,Jsp,Cookies,我在验证servlet和实际jsp之间的cookie可见性方面遇到了一个奇怪的问题。我们使用一个servlet来验证用户是否是有效用户,如果他们是,我们继续向HttpServletResponse添加一个cookie和他们的referer url(这样,集成可以在注销时重定向到他们自己的登录页面)。注销操作通过同一个servlet,检索cookie,并将用户定向回存储的cookie url。这一切都有效 但是,在我的站点中,如果我打印通过pageContext.getRequest().getC

我在验证servlet和实际jsp之间的cookie可见性方面遇到了一个奇怪的问题。我们使用一个servlet来验证用户是否是有效用户,如果他们是,我们继续向HttpServletResponse添加一个cookie和他们的referer url(这样,集成可以在注销时重定向到他们自己的登录页面)。注销操作通过同一个servlet,检索cookie,并将用户定向回存储的cookie url。这一切都有效

但是,在我的站点中,如果我打印通过pageContext.getRequest().getCookies()[或通过firebug的控制台]提取的cookie,我根本找不到存储的cookie。简直没有它的踪迹。但是,当您单击注销链接并被定向回身份验证servlet时,会找到cookie,并相应地重定向

问题是,我需要以与注销相同的方式处理超时操作,但是超时检查在servlet外部,在jsp标记中。因为超时找不到cookie,所以它只是使用标准的timout页面,集成客户不希望看到该页面

你知道这是怎么回事吗

[答复]
结果是一个路径问题。我知道我没有粘贴任何代码,但我创建cookie时没有设置路径,因此cookie只在servlet目录中可见。一旦我设置了“/”路径,cookie在整个站点中都是可见的。

当你说“在我的站点内”时,这是否意味着你的站点部署在不同的(子)域上?默认情况下,cookie仅对设置它们的主机可见,这意味着从“www.example.com”设置的cookie对“other.example.com”不可见。您可以通过显式地将cookie域指定为两者通用(例如“example.com”)。

您是如何执行此重定向的


的方法接受请求和响应对象,可能是您已经在使用的对象。这意味着请求对象与您在Servlet中处理的HttpServletRequest对象相同。

实际上,这是一个路径问题。我知道我没有粘贴任何代码,但我创建cookie时没有设置路径,因此cookie只在servlet目录中可见。一旦我设置了“/”的路径,cookie就可以在整个站点中看到。

不,它都在同一个域中。servlet驻留在它自己的目录中,而jsp页面是在rootI之外提供的,我实际上使用的是HttpServletResponse的sendRedirect(…)。所以我会在验证和存储cookie后在servlet中使用它重定向到主站点?我会尝试一下。但是,即使没有重定向,进入任何后续页面也会丢失cookie。。。那部分还在做。