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