浏览器的后退按钮

时间:2015-04-22 12:13:22

标签: java

在我的web java应用程序中,我成功从主页面注销到索引页面但是当我单击浏览器的后退按钮时,我有了主页面,尽管我没有输入我的用户名和密码。

  protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();

     request.getRequestDispatcher("index.html").include(request, response);  

        HttpSession session=request.getSession();  
        session.invalidate();  
           out.close();  
}

2 个答案:

答案 0 :(得分:2)

  

我点击了浏览器的后退按钮   尽管我没有输入我的用户名和密码

浏览器后退按钮不向服务器发出请求。它是从缓存页面加载的,所以即使你有会话验证它也不会在这里工作。

您可以使用客户端脚本来解决此问题。我通过使用此脚本解决了同样的问题,您需要在需要有效会话的所有页面上进行此操作。

编辑:

<script>
  history.forward();
  if(window.attachEvent) {// extra step for IE
    window.attachEvent('onload', function() {});
  }
</script>

答案 1 :(得分:1)

这肯定是由浏览器的缓存引起的。

您可以通过设置一些标题信息来关闭登录页面的缓存。

引自this answer

// Set standard HTTP/1.1 no-cache headers.
response.setHeader("Cache-Control", "private, no-store, no-cache, must-revalidate");

// Set standard HTTP/1.0 no-cache header.
response.setHeader("Pragma", "no-cache");

//Proxies
response.setDateHeader("Expires", 0);