【发布时间】:2009-07-22 00:07:51
【问题描述】:
我在身份验证 servlet 和我们的实际 jsp 之间的 cookie 可见性方面遇到了一个奇怪的问题。我们使用 servlet 来验证用户是否是有效用户,如果是,我们继续向 HttpServletResponse 添加一个 cookie 及其引用 url(这样可以将集成重定向到他们自己的登录页面登出)。注销操作通过同一个 servlet,然后检索 cookie,并将用户定向回存储的 cookie url。这一切都有效。
但是,在我的站点中,如果我打印出通过 pageContext.getRequest().getCookies() [或通过萤火虫的控制台] 提取的 cookie,我根本找不到我存储的 cookie。从字面上看,它没有任何痕迹。然而,当您单击注销链接并被引导回身份验证 servlet 时,会找到 cookie,并进行相应的重定向。
问题是,我需要以与注销相同的方式处理超时操作,但超时检查在 servlet 外部,在 jsp 标记中。由于超时找不到cookie,它只是使用标准的超时页面,集成客户不想看到。
有什么想法吗?
[回答] 原来是路径问题。我知道我没有粘贴任何代码,但是我在没有设置路径的情况下创建了 cookie,因此 cookie 仅在 servlet 目录中可见。一旦我设置了“/”路径,cookie 就会在整个站点中可见。
【问题讨论】: