[英]How to invalidate browser session
如何使瀏覽器會話無效。 我正在使用JSP。 在web.xml
, session-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.