Как сделать браузер недействительным - PullRequest
3 голосов
/ 22 марта 2011

Как я могу сделать недействительным сеанс браузера.Я использую 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>

Я что-то упустил?

Ответы [ 2 ]

4 голосов
/ 22 марта 2011

Эти заголовки являются неполными. Это будет работать только в 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. Например, см. этот ответ .

1 голос
/ 22 марта 2011

Как вы сказали, при нажатии кнопки "Назад" сеанс становится недействительным. Поэтому, пожалуйста, сделайте сессию недействительной сессией при событии кнопки Назад.

добавьте "<" ">" для первой строки и строки lasr во фрагменте кода

<script type="text/javascript">

      bajb_backdetect.OnBack = function()
      {

        alert('You clicked it!');

      }

<script>
...