-2

我使用了下面给出的代码,但它仍然无法正常工作

response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, 
max-age=0, private");; 
response.setDateHeader("Expires", 0);
response.setHeader("Pragma", "no-cache");

编辑:添加 jsp 标签。

4

3 回答 3

0

您需要在要禁用浏览器缓存的所有 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);
    }

    // ...
}
于 2012-04-20T13:34:00.057 回答
0

您需要在服务器端检查会话 - 一种典型的方法是使用过滤器,如果没有可用的会话,则重定向到您的登录页面。

请参阅此问题以了解如何执行此操作。

于 2012-04-20T13:16:45.927 回答
-1

在注销页面上使用此代码将解决问题。

<script language="JavaScript">
javascript:window.history.forward(1);
</script>
于 2012-04-20T11:25:23.390 回答