如何使用Servlets停止在浏览器中缓存页面?
如果我在登录时按下浏览器按钮,我希望该会话过期。
答案 0 :(得分:10)
永久禁用缓存。
// 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();
答案 1 :(得分:2)
如果您获得了请求的HttpServletResponse(实现)对象,您可以发送HTTP标头,以鼓励浏览器不要缓存您发送的内容。
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");
请参阅HttpServletResponse和HttpServletResponseWrapper的文档。如果您需要在HTTP中读取缓存控制标头check this out。