簡體   English   中英

如何使瀏覽器會話無效

[英]How to invalidate browser session

如何使瀏覽器會話無效。 我正在使用JSP。 web.xmlsession-timeout設置為180秒,我只想這樣。 但問題是在某些特殊場合,某些用戶的瀏覽器會話需要在表單提交后立即失效。

我用過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>

我錯過了什么嗎?

那些標題不完整。 這只適用於Internet Explorer,但在其他情況下會失敗。 完整的設置是

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

而且您還需要在之前的 JSP頁面中設置它們。 在JSP中調用它只會禁用緩存當前的 JSP頁面。 您需要在所有JSP頁面上進行密碼處理( 不寒而栗 )。 或者甚至更好,使用一個Filter來映射*.jsp 例如,請參閱此答案

正如你所說,點擊后退按鈕會話正在變得無效。 所以請在后退按鈕事件上使會話無效。

請在代碼段中為first和lasr行添加"<" ">"

<script type="text/javascript">

      bajb_backdetect.OnBack = function()
      {

        alert('You clicked it!');

      }

<script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM