注销后,单击“后退”按钮缓存问题
<%
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); //prevents caching at the proxy server
%>
注销后,在登录页面上,如果您单击“后退”按钮,则会在登录时显示旧页面。我在jsp中使用上述3行代码,并将其包含在body标签内的所有jsps中。这不适用于某些jsps。在注销后停止缓存时需要考虑哪些事项。如果jsp具有Post方法的形式,则此技术行不通?
在我的注销操作中,我正在这样做。
Cookie logoutCookie = new Cookie("somename", null);logoutCookie.setPath("/somename");
logoutCookie.setMaxAge(0);
ServletActionContext.getResponse().addCookie(logoutCookie);
谢谢。
回答:
我将其包含在我的所有jsps体内标签中
如果此时已提交HTTP响应,可能
。当已经写入X个字符(在您的情况下为HTML)字符时,将提交HTTP响应<head>
。您需要将这些行放在JSP文件的最顶部,而不是<body>
HTML表示形式的。
无关紧要的是,您将相同的代码行复制到多个文件中,这是一个巨大的设计错误。这不是DRY。每当你需要copypaste代码,你应该总是停下来问自己,如果没有一个
单一的 执行特定代码的地方。在您的特定情况下,应该使用aFilter
代替。。另外,在JSP中编写Java代码也是一种不好的做法。
另外,您的注销方法很奇怪。不要将用户名存储在某些自定义Cookie中。您基本上是在重新设计会话。只需将登录用户存储为会话属性,然后使整个会话无效并发送重定向。
request.getSession().invalidate();response.sendRedirect(request.getContextPath() + "/home.jsp");
以上是 注销后,单击“后退”按钮缓存问题 的全部内容, 来源链接: utcz.com/qa/402305.html