2013-07-22 242 views
5

如何防止浏览器在退出后使用页面的缓存副本?注销后浏览器后退按钮

当用户仍然退出时,他们仍然可以使用后退按钮访问前一页。

据我所知,我们不能禁用后退按钮(根据SO回答)。

目前我在不同的场景中有大量的页面,所以我不能修改每一个页面。

我曾尝试

  1. 设置过期头(做我需要设置每一个页面上?另外,如果我做到这一点:浏览器缓存中的网页内容是什么?(因为我需要的浏览器缓存内容如果用户登录))
  2. 我已经有一个轮询系统(但仍然有延迟检测)
  3. 基于Javascript的解决方案(它的工作原理,但仍然可以使用历史选项导航或长按后退按钮)

我真的被困在这里,你能帮我解决问题吗?

+1

为什么你想这样做,他会做任何事情后,会话已结束,任何点击,他将被抛出去...... –

+1

@先生我知道这一点。但我的客户仍然认为这是一个问题。 – Red

回答

5

我认为这段代码会帮助你,在父控制器构造函数中使用这段代码。

//Log out Back 
header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1. 
header("Pragma: no-cache"); // HTTP 1.0. 
header("Expires: 0"); // Proxies. 
+0

你能解释一下后面会发生什么?如果他已登录,我需要浏览器缓存内容。 – Red

+0

当您注销网站时,它将清除缓存。当您登录该网站时,缓存将自动获取用户登录值。 –

+0

是为特定网页还是整个网域? – Red

0

这是链接全部回答。

http://www.codeproject.com/Tips/549347/Browser-Back-Button-Issue-After-Logout

我尝试了上述所有解决方案,但浏览器不兼容。

所以更好的方法是做Ajax post或在页面加载检查会话var null或不。

此提示还有一个限制,当用户单击浏览器的后退按钮时,由于执行WebMethod,后台页面显示1秒或半秒。但可以在任何浏览器的所有版本中正常使用!