以下のコードを使用しましたが、まだ機能しません
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate,
max-age=0, private");;
response.setDateHeader("Expires", 0);
response.setHeader("Pragma", "no-cache");
編集:jspタグを追加。
サーバー側でセッションを確認する必要があります。一般的な方法は、セッションが利用できない場合にログイン ページにリダイレクトするフィルターを使用することです。
その方法については、この質問を参照してください。
ログアウト ページなどだけでなく、ブラウザ キャッシュを無効にするすべての JSP でこれらの応答ヘッダーを設定する必要があります。
通常、これにはフィルタを使用して、すべての JSP に同じコードをコピーペーストする必要がないようにします。制限されたすべてのページが同じ URL パターンを共有すると仮定すると、フィルターは次のようになります/app/*
。
@WebFilter("/app/*")
public class NoCacheFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
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); // Proxies.
chain.doFilter(req, res);
}
// ...
}
このコードをログアウト ページで使用すると、問題が解決します。
<script language="JavaScript">
javascript:window.history.forward(1);
</script>