注销后,单击后退按钮将我带到访问过的页面,如何停止?

时间:2012-05-14 06:50:33

标签: jsp caching button browser back

每个人,

我正在用JSP编写Web应用程序,我是JSP和java的新手,谁能告诉我如何摆脱浏览器缓存。

我会简要介绍一下我的问题...... 从登录页面登录的用户被带到主页,会话被设置。 当他们从主页单击Logout时,他们会在内部进入注销页面,会话被销毁,用户被重定向到登录页面。

现在的问题是,当他们点击浏览器的后退按钮时,会再次显示以前访问过的页面,但是如果我解雇主页或其他需要在浏览器中登录的访问页面,则在注销后重定向到登录页面,这很好,我唯一的问题是后退按钮。

我尝试过的代码片段如下:

    <script type="text/javascript">
    function noBack() { window.history.forward(); }
    noBack();
    window.onload = noBack;
    window.onpageshow = function (evt) { if (evt.persisted) noBack(); }
    window.onunload = function () { void (0); }
    </script>

<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="pragma" content="no-cache">

    <%  
      response.setHeader("Cache-Control", "no-cache");  
      response.setHeader("Pragma", "no-cache");  
      response.setDateHeader("max-age", 0);  
      response.setDateHeader("Expires", 0);  
    %>

拜托,任何人都可以帮助我???? :( :(

2 个答案:

答案 0 :(得分:0)

我也遇到过这种情况,但事实证明后退按钮因设计而异。人们引用HTTP 1.1 standardtop 10 web design mistakes来解释说,即使它会导致注销功能失效,但是返回显示您加载的确切页面(未过期)也很重要。就像银行一样,并警告用户关闭窗口,如果它很重要。

答案 1 :(得分:0)

使用此:

<%
    response.setHeader( "Cache-Control", "no-store, no-cache, must-revalidate");  //HTTP 1.1
    response.setHeader("Pragma","no-cache"); //HTTP 1.0
    response.setDateHeader ("Expires", -1); //prevents caching at the proxy server
%>

这告诉浏览器不要缓存页面。您必须在每个不必缓存的页面中包含此代码。

但请阅读this页面。有一个完整的答案。