如何在点击浏览器后退按钮时使会话无效并阻止访问?

时间:2014-10-16 10:27:41

标签: java jsp session

我正在编写JSP页面,在注销时我使会话无效。但问题是当我点击回来时我可以访问上一页。如何避免它。在我进行了一些互联网搜索后,我知道这是因为浏览器的缓存。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您必须明确设置响应标头,并让浏览器知道不要缓存这些页面。

为所有jsp页面设置响应标题,如果单击后退按钮则不应显示该页面。

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

或者更好的方法是设置noCacheFilter以防止缓存jsp页面,方法是为* .jsp文件设置过滤器,如下所示:

@Override
public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {
    response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
    response.setHeader("Pragma", "no-cache");
    response.setDateHeader("Expiresponse", 0);
    chain.doFilter(request, response);
}

并添加此过滤器以映射*.jsp个文件li

<filter>
    <filter-name>noCacheFilter</filter-name>
    <filter-class>com.abcd.NoCacheFilter</filter-class> //Filter class path
</filter>
<filter-mapping>
    <filter-name>noCacheFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
</filter-mapping>