我使用了下面给出的代码,但它仍然无法正常工作
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate,
max-age=0, private");;
response.setDateHeader("Expires", 0);
response.setHeader("Pragma", "no-cache");
编辑:添加 jsp 标签。
您需要在要禁用浏览器缓存的所有 JSP 上设置这些响应标头,而不仅仅是在注销页面或其他地方。
您通常为此使用过滤器,这样您就不需要在所有 JSP 上复制粘贴同一段代码。下面是过滤器的样子,假设所有受限页面共享相同的 URL 模式,例如/app/*
:
@WebFilter("/app/*")
public class NoCacheFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(req, res);
}
// ...
}
您需要在服务器端检查会话 - 一种典型的方法是使用过滤器,如果没有可用的会话,则重定向到您的登录页面。
请参阅此问题以了解如何执行此操作。
在注销页面上使用此代码将解决问题。
<script language="JavaScript">
javascript:window.history.forward(1);
</script>