繁体   English   中英

为什么session.invalidate在IE浏览器中不起作用?

[英]Why session.invalidate doesn't work in IE browser?

我在应用程序中实现了一个sevlet过滤器,并且在过滤器中,如果我找到一些特定的url模式,我将使用request.getSession()。invalidate()登出并清除​​会话,然后重定向到登录页面。

session.invalidate();
session.setAttribute("hi", true);
response.sendRedirect("login.jsp");

但是我发现,在输入用户名和密码之后,然后提交登录表单,上一个会话似乎没有完全清除。

因此,是否可以让我完全清除会话,就像启动一个新的IE实例一样?(BTY,我的代码在FF和Chrome中有效)。

会话是服务器端的概念。 浏览器仅持有一个jsessionid来告诉服务器要为该请求获取哪个会话对象。

也就是说,您的问题不是IE。 即使是这样,这也是您要面对的某种缓存。 清除缓存。 您可以设置以下响应头:

Cache-Control: no-cache, no-store
Pragma: no-cache

我知道这是旧帖子。 但是最近我有同样的问题。

我尝试使用session.invalidate()...。 我尝试删除coockies,但不起作用...

问题是Internet Explorer缓存。我在Serlevt响应中没有放置任何缓存头,然后为我工作。

示例代码:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setHeader("Cache-Control","no-store"); //HTTP 1.1 
    response.setHeader("Pragma","no-cache"); //HTTP 1.0 
    response.setDateHeader ("Expires", 0);
    ......
    ......
    response.response.getWriter().print(json);

}

@Bozho有一个简单的问题需要澄清。 JSP已创建默认的会话隐含对象。 在这种情况下,他创建了一个会话,然后使其无效,在无效之后,他设置了属性,该属性再次使用创建的隐式会话。

暂无
暂无

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

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