创建注销,以便在JSP中不执行任何后退操作

时间:2012-03-20 18:32:23

标签: jsp ssl logout no-cache

我想在JSP中创建一个注销操作,以便没有后退操作。目前,我正在使用session.invalidate方法来终止现有会话并指向登录页面。

但是,如果用户按下后退按钮,则不会阻止页面加载。在搜索之后,我发现像SSL这样的东西被用于此目的。任何人都可以告诉我什么是SSL(除了它的完整形式:)(安全套接字层))?它是如何使用的?

除此之外,经过多次搜索,我发现了这段代码

<%
response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
%>

我将此代码保留在body标签的开头,但它无效。可能是什么错误?我甚至尝试用“no-store”代替“no-cache”?任何人都可以帮助我更多的更改或我应该在哪里保留特定的代码? 除此之外,还有其他人有另一种解决方案吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

Cache-Control标头不完整。它必须包含no-storemust-revalidate

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.

另见:

请注意,需要在每个请求上设置这些标头,这需要登录。更简单的是为此设置单个servlet过滤器,这样您就不需要在所有JSP页面上复制相同的代码段。上述链接包含一个具体的例子。您可以在与检查登录用户相同的过滤器中执行此操作(如果有)。无论如何,在JSP文件中编写Java代码都是poor practice

SSL(读取:HTTPS而不是HTTP)仅用于防止中间人攻击,其中整个HTTP流量已被某些恶意代理,路由器,病毒或其他内容捕获和读取。网络流量。然后,任何潜在的敏感信息(例如提交的登录数据和检索到的响应)都会以攻击者的明文形式显示。 SSL将对此流量进行加密,以使攻击者无法读取此流量。它对缓存和身份验证没有任何作用。 SSL将在服务器级别配置,而不是在webapp级别配置。阅读服务器文档以获取详细信息例如。 Tomcat 7.0.x的Tomcat 7.0 SSL HOW-TO