繁体   English   中英

Java Servlet / JSP Cookie断开连接

[英]Java Servlet/JSP Cookie Disconnect

我在身份验证Servlet和实际的jsp之间的cookie可见性遇到一个奇怪的问题。 我们正在使用servlet来验证用户是有效用户,如果是,我们继续使用其引用URL向cookie添加到HttpServletResponse(这样可以将集成重定向到他们自己的登录页面)登出)。 注销操作将通过相同的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”)。

您如何执行此重定向?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM