gpt4 book ai didi

java - 如何使浏览器 session 无效

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:56:53 25 4
gpt4 key购买 nike

如何使浏览器 session 无效。我正在使用 JSP。在 web.xml 中,session-timeout 被设置为 180 秒,我只希望这样。但问题是在某些特殊情况下,某些用户的浏览器 session 需要在表单提交后立即失效。

我使用了session.invalidate();来使session无效,还使用了

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

但是,当我单击后退按钮时,它仍会将我带到相同的用户 session 。这是从浏览器缓存加载的吗?

这是我的 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>

我错过了什么吗?

最佳答案

这些 header 不完整。这只适用于 Internet Explorer,但在其他浏览器中会失败。完整的集合是

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

并且您还需要在之前的 JSP 页面中设置它们。在 JSP 中调用它只会禁用缓存 current JSP 页面。您需要将它复制粘贴到所有 JSP 页面上(不寒而栗)。或者更好的是,为此使用映射到 *.jsp 上的 Filter。有关示例,请参阅 this answer .

关于java - 如何使浏览器 session 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5387632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com