0

セッションで問題が発生しました。ログアウトするとセッションは終了しますが、ブラウザの戻るボタンを押すと前のページが表示されます。私はjspサーブレット技術を使用しており、ログアウト用のコードを以下に示します

                    request.getSession().invalidate();
        response.setHeader("Cache-Control","no-cache"); 
        response.setDateHeader("Expires", 0);
        response.setHeader("Pragma","no-cache"); 
        response.sendRedirect("home.jsp");

問題がどこにあり、この問題の解決策は何か教えてもらえますか?

4

3 に答える 3

1

ログアウト ページだけにキャッシュ ヘッダーを設定しますか? その場合、元のページにはそれらがなく、キャッシュされるため、各ページにそれらを配置する必要があります。

于 2012-06-07T08:06:18.033 に答える
0

以下のようにコードを書きます。

     //...
     response.setHeader("Cache-Control","no-cache"); //Forces caches to obtain a new copy of the page from the origin server
     response.setHeader("Cache-Control","no-store"); //Directs caches not to store the page under any circumstance
     response.setDateHeader("Expires", 0); //Causes the proxy cache to see the page as "stale"
     response.setHeader("Pragma","no-cache"); //HTTP 1.0 backward compatibility

     //can check userId or something likes this.In this sample, i checked with userName.
     String userName = (String) session.getAttribute("User");
     if (null == userName) {
         request.setAttribute("Error", "Session has ended.  Please login.");
         RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
         rd.forward(request, response);
    }
于 2012-06-07T08:46:56.097 に答える
0
<script>
    history.forward();
 </script>

この JavaScript をログアウト ページの前のページに追加して呼び出します。タグに以下のコードを追加します

onLoad="if (location.href.indexOf('reload')==-1) location.replace(location.href+'?reload')"

戻るボタンの問題を解決します。

于 2012-06-07T06:51:31.877 に答える