我使用了以下代码来设置header Pragma :无缓存和缓存-控制:无缓存,无控制
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetNoStore();我检查了响应头包含Pragma:无缓存,这意味着上面的C#代码运行良好。
我的问题是;
应用程序响应头包含Pragma: no-cache和Cache-Control: no-chase.那为什么浏览保存历史呢?
我需要帮助如何可以禁用后退按钮或保存历史记录的浏览器。
我知道我可以通过js隐藏工具栏,也可以通过编写js代码禁用back按钮功能,但我需要另一种解决方案。
等着你的帮助。
发布于 2014-02-22 12:00:31
缓存与历史无关。这是两种不同的功能。禁用缓存并不指示浏览器避免保存历史记录。没有支持“禁用后退按钮”或禁用历史记录的方法。
这是一个客户端功能。可能有或可能没有特定的浏览器黑客,但这些是不受支持的,很可能会破坏新版本的浏览器,移动浏览器等.
而不是试图强迫浏览器做一些它不想做的事情,设计你的网站,这样“后退”按钮就不会产生问题。
例如,使用模式来帮助减少重发数据。
我拒绝使用任何以这种方式破坏我浏览器的网站(我可能有其他我想要保存的历史,如果你在未经我允许的情况下删除它,我会非常生气)。我知道很多其他人也有同样的感受。所以,除非你想疏远你的用户,否则不要这么做。
发布于 2014-02-22 13:08:13
在您的代码中,Controller操作将工作,即使您按下浏览器返回按钮-
Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1
Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.1
Response.AppendHeader("Keep-Alive", "timeout=3, max=993"); // HTTP 1.1
Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.1更新
我在控制器操作中使用了这一点,如下所示,当我单击browser back按钮时,控制器动作断点被击中。我正在使用Chrome 33.0.1750.117进行测试。
public class PersonController : Controller
{
public ActionResult Index()
{
Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1
Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.1
Response.AppendHeader("Keep-Alive", "timeout=3, max=993"); // HTTP 1.1
Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.1
}
}https://stackoverflow.com/questions/21953384
复制相似问题