Java 如何防止servlet的结果被缓存?
如何停止使用servlet在浏览器中缓存页面 如果我在登录时按下浏览器的“后退”按钮,我希望该会话将过期。如果您获得请求的(实现)对象,您可以发送HTTP头,这将鼓励浏览器不缓存您发送的内容Java 如何防止servlet的结果被缓存?,java,caching,servlets,Java,Caching,Servlets,如何停止使用servlet在浏览器中缓存页面 如果我在登录时按下浏览器的“后退”按钮,我希望该会话将过期。如果您获得请求的(实现)对象,您可以发送HTTP头,这将鼓励浏览器不缓存您发送的内容 HttpServletResponse response; // You'll need to initialize this properly response.setHeader("Cache-control", "no-cache, no-store"); response.setHeader("P
HttpServletResponse response; // You'll need to initialize this properly
response.setHeader("Cache-control", "no-cache, no-store");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "-1");
有关和,请参阅文档。如果您需要读取HTTP中的缓存控制头,.以永久禁用缓存
// Set to expire far in the past.
response.setHeader("Expires", "Sat, 6 May 1995 12:00:00 GMT");
// Set standard HTTP/1.1 no-cache headers.
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
// Set IE extended HTTP/1.1 no-cache headers (use addHeader).
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
// Set standard HTTP/1.0 no-cache header.
response.setHeader("Pragma", "no-cache");
清除客户端缓存不会立即使会话过期,但会清除浏览器中的会话cookie。要使会话立即过期,需要在服务器端jsp或servlet中显式指定
// use session invalidate
session.invalidate();
是否需要以上所有行,或者
setHeader()
中的任何一行就足够了?@Alpine取决于浏览器。请参阅我刚才添加的有关缓存控制头的链接。谢谢,但我还是遇到了一个问题。登录后,如果我按back,然后按forward,则会话仍然有效on@Prashant您说过要避免缓存。你到底想让什么过期?response.setHeader(“Expires”、“-1”)代码>为什么我们要使用-1
可能重复的