アプリケーションのログイン画面がブラウザによってキャッシュされないようにするために、次のコードを使用しています。
public class SessionHandler implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) {
.
.
.
try {
HttpServletRequest httpReq = (HttpServletRequest) request;
HttpServletResponse httpRes = (HttpServletResponse) response;
//ignore images/css...etc
if(!httpReq.getRequestURI().startsWith(httpReq.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER)){
//if login screen or home - don't cache
if(httpReq.getRequestURI().equalsIgnoreCase("/jsp/auth_login.faces")
|| httpReq.getRequestURI().equalsIgnoreCase("/jsp/def_home.faces") ) {
System.out.println(httpReq.getRequestURI() + " ----- " + " WON'T BE CACHED");
httpRes.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
httpRes.setHeader("Pragma", "no-cache"); // HTTP 1.0.
httpRes.setDateHeader("Expires", 0); // Proxies.
}
}
filterChain.doFilter(request, response);
...
BalusC
キャッシュを防ぐために、ここで回答した質問の1つで見つけたコードを使用します。私の問題は、ページがまだブラウザによってキャッシュされているように見えることです。Chromeデベロッパーツールを使用してページのHTMLヘッダーを表示すると、最初のページの読み込み時に次のように表示されます。
ログインに成功した後、ログインページに戻ると、次のように表示されます。
ログインページがキャッシュされている理由を誰かに教えてもらえますか?