3

ブラウザセッションを無効にするにはどうすればよいですか。私はJSPを使用しています。web.xmlで180秒に設定されているので、そのsession-timeoutようにしたいだけです。ただし、問題は特別な場合にあり、フォームの送信直後に一部のユーザーのブラウザセッションを無効にする必要があります。

私はsession.invalidate();セッションを無効にするために使用し、また使用しました

response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);

ただし、戻るボタンをクリックすると、同じユーザーセッションに移動します。これはブラウザのキャッシュから読み込まれていますか?

これは私が私のJSPに持っているものです:

<head>
<script type="text/javascript">
function submitForm(){window.document.submitFrm.submit();}
</script>
</head>
<body onload="submitForm()">
<%String output = (String)(request.getAttribute("strOut"));
String hookUrl = (String)(request.getAttribute("hookUrl"));
System.out.println("hookUrl in cwsGroup.jsp : "+hookUrl);%>
<form method="post" action="<%=hookUrl%>" name="submitFrm" id="submitFrm">
<input type="hidden"  name="cxml-urlencoded" value='<%=output%>' />
</form>
<%
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
response.setDateHeader( "Expires", 0 );
session.removeValue("domineName");
session.invalidate();%>
</body>

私は何かが足りないのですか?

4

2 に答える 2

4

それらのヘッダーは不完全です。これはInternetExplorerでのみ機能しますが、他のエクスプローラーでは失敗します。完全なセットは

response.setHeader("Cache-Control","no-cache,no-store,must-revalidate");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires", 0);

また、前のJSPページでも設定する必要があります。これをJSP内で呼び出すと、現在のJSPページのキャッシュのみが無効になります。すべてのJSPページにコピーアンドペーストする必要があります(shudder 。またはさらに良いことに、Filterにマップされているこれにを使用し*.jspます。例については、この回答を参照してください。

于 2011-03-22T13:46:58.550 に答える
1

あなたが言ったように、戻るボタンセッションをクリックすると無効になります。そのため、戻るボタンイベントでセッションを無効にするようにしてください。

"<" ">"コードスニペットの最初の行と最後の行を追加してください

<script type="text/javascript">

      bajb_backdetect.OnBack = function()
      {

        alert('You clicked it!');

      }

<script>
于 2011-03-22T06:45:58.090 に答える