每个人,
我正在用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);
%>
拜托,任何人都可以帮助我???? :( :(
答案 0 :(得分:0)
我也遇到过这种情况,但事实证明后退按钮因设计而异。人们引用HTTP 1.1 standard和top 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页面。有一个完整的答案。