我创建了一个包含两个页面的简单ASP.NET 3.5 Web应用程序。每个页面都有一个显示时间的标签和一个要回发的按钮。在每页的Page_Load中,我有以下内容:
Response.ClearHeaders();
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
如果用户点击“返回”按钮,我想强制“页面已过期”消息。但是,正在发生的事情是后退按钮显示上一页,而不是从缓存中提取但刷新页面。标签将使用当前时间进行更新。我不希望页面刷新,而是显示“页面已过期”消息。我怎么强迫呢?我已经使用IE9对此进行了测试,但我需要对所有浏览器都采用相同的行为。
答案 0 :(得分:1)
当浏览器向页面发送POST请求时,通常会给出“页面已过期”消息,并且用户希望刷新或返回该页面。要强制它,你必须使每个页面成为POST请求。 This thread可能能够为您提供JavaScript代码,以便将所有链接(即GET请求)转换为POST请求。
或者,您可以使用JavaScript或Cookie来保存所访问页面的历史记录,如果用户尝试返回页面,您可以使用它来重定向或给他们留言。