首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从ASP.net MVC禁用浏览器历史记录保存或兑现选项

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

Stack Overflow用户
提问于 2014-02-22 11:05:01
回答 2查看 3.2K关注 0票数 0

我使用了以下代码来设置header Pragma :无缓存缓存-控制:无缓存,无控制

代码语言:javascript
复制
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetNoStore();

我检查了响应头包含Pragma:无缓存,这意味着上面的C#代码运行良好。

我的问题是;

应用程序响应头包含Pragma: no-cache和Cache-Control: no-chase.那为什么浏览保存历史呢?

我需要帮助如何可以禁用后退按钮或保存历史记录的浏览器。

我知道我可以通过js隐藏工具栏,也可以通过编写js代码禁用back按钮功能,但我需要另一种解决方案。

等着你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-22 12:00:31

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

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

而不是试图强迫浏览器做一些它不想做的事情,设计你的网站,这样“后退”按钮就不会产生问题。

例如,使用模式来帮助减少重发数据。

我拒绝使用任何以这种方式破坏我浏览器的网站(我可能有其他我想要保存的历史,如果你在未经我允许的情况下删除它,我会非常生气)。我知道很多其他人也有同样的感受。所以,除非你想疏远你的用户,否则不要这么做。

票数 2
EN

Stack Overflow用户

发布于 2014-02-22 13:08:13

在您的代码中,Controller操作将工作,即使您按下浏览器返回按钮-

代码语言:javascript
复制
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进行测试。

代码语言:javascript
复制
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
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21953384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档