Asp.net mvc 如何从ASP.net MVC禁用浏览器历史记录保存或兑现选项

Asp.net mvc 如何从ASP.net MVC禁用浏览器历史记录保存或兑现选项,asp.net-mvc,caching,Asp.net Mvc,Caching,我使用了以下代码来设置HTTP头 杂注:无缓存和缓存控制:无缓存,无控制 HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); HttpContext.Current.Response.Cache.SetNoStore(); 我检查了响应头是否包含Pragma:没有缓存,这意味着上面的C代码工作正常 我的问题是, 应用程序响应标头包含Pragma:no cache和cache Control:

我使用了以下代码来设置HTTP头 杂注:无缓存缓存控制:无缓存,无控制

HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetNoStore();
我检查了响应头是否包含Pragma:没有缓存,这意味着上面的C代码工作正常

我的问题是,

应用程序响应标头包含Pragma:no cache和cache Control:no chase。那为什么要保存历史呢

我需要帮助如何禁用后退按钮或通过浏览器保存历史记录

我知道我可以通过js从浏览器中隐藏工具栏,也可以通过编写js代码禁用后退按钮功能,但我需要另一个解决方案


等待您的帮助。

缓存与历史无关。这是两种不同的功能。禁用缓存不会指示浏览器避免保存历史记录。没有支持的“禁用后退按钮”或禁用历史记录的方法

这是一个客户端功能。可能有或可能没有特定浏览器的黑客可以做,但这些是不受支持的,可能会打破浏览器,移动浏览器等新版本

与其试图强迫浏览器去做它原本不打算做的事情,不如设计你的网站,这样后退按钮就不会引起问题

例如,使用Post-Redirect-Get模式帮助缓解重新发布数据的问题


我拒绝使用任何以这种方式干扰我的浏览器的网站(我可能有其他我想保留的历史记录,如果你未经我的许可就在我身上删除它,我会非常生气)。我知道很多其他人也有同样的感觉。所以,除非你想疏远你的用户,否则不要这样做。

缓存与历史无关。这是两种不同的功能。禁用缓存不会指示浏览器避免保存历史记录。没有支持的“禁用后退按钮”或禁用历史记录的方法

这是一个客户端功能。可能有或可能没有特定浏览器的黑客可以做,但这些是不受支持的,可能会打破浏览器,移动浏览器等新版本

与其试图强迫浏览器去做它原本不打算做的事情,不如设计你的网站,这样后退按钮就不会引起问题

例如,使用Post-Redirect-Get模式帮助缓解重新发布数据的问题


我拒绝使用任何以这种方式干扰我的浏览器的网站(我可能有其他我想保留的历史记录,如果你未经我的许可就在我身上删除它,我会非常生气)。我知道很多其他人也有同样的感觉。所以,除非你想疏远你的用户,否则不要这样做。

缓存与历史无关。这是两种不同的功能。禁用缓存不会指示浏览器避免保存历史记录。没有支持的“禁用后退按钮”或禁用历史记录的方法

这是一个客户端功能。可能有或可能没有特定浏览器的黑客可以做,但这些是不受支持的,可能会打破浏览器,移动浏览器等新版本

与其试图强迫浏览器去做它原本不打算做的事情,不如设计你的网站,这样后退按钮就不会引起问题

例如,使用Post-Redirect-Get模式帮助缓解重新发布数据的问题


我拒绝使用任何以这种方式干扰我的浏览器的网站(我可能有其他我想保留的历史记录,如果你未经我的许可就在我身上删除它,我会非常生气)。我知道很多其他人也有同样的感觉。所以,除非你想疏远你的用户,否则不要这样做。

缓存与历史无关。这是两种不同的功能。禁用缓存不会指示浏览器避免保存历史记录。没有支持的“禁用后退按钮”或禁用历史记录的方法

这是一个客户端功能。可能有或可能没有特定浏览器的黑客可以做,但这些是不受支持的,可能会打破浏览器,移动浏览器等新版本

与其试图强迫浏览器去做它原本不打算做的事情,不如设计你的网站,这样后退按钮就不会引起问题

例如,使用Post-Redirect-Get模式帮助缓解重新发布数据的问题


我拒绝使用任何以这种方式干扰我的浏览器的网站(我可能有其他我想保留的历史记录,如果你未经我的许可就在我身上删除它,我会非常生气)。我知道很多其他人也有同样的感觉。所以,除非你想疏远你的用户,否则不要这样做。

在你的代码中包含这一点,即使你点击浏览器后退按钮,控制器操作也会起作用-

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
更新

我在控制器操作中使用了它,如下所示,当我点击浏览器后退按钮时,控制器操作断点被击中。我正在使用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
    }
}

在代码中包含这一点,即使您点击浏览器后退按钮,控制器操作也会起作用-

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
更新

我在控制器操作中使用了它,如下所示,当我点击浏览器后退按钮时,控制器操作断点被击中。我正在使用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
    }
}

在代码中包含这一点,即使您点击浏览器后退按钮,控制器操作也会起作用-

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
更新

我在控制器操作中使用了它,如下所示,当我点击浏览器后退按钮时,控制器操作断点被击中。我正在使用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
    }
}

在代码中包含这一点,即使您点击浏览器后退按钮,控制器操作也会起作用-

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
更新

我在控制器操作中使用了它,如下所示,当我点击浏览器后退按钮时,控制器操作断点被击中。我正在使用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
    }
}

很抱歉我试过了,但运气不好。是否可以共享任何示例项目?感谢您的回复。对于缓存它是好的,谢谢。有吗