繁体   English   中英

当用户单击asp.net中的浏览器后退按钮时,如何快速重定向页面

[英]How to redirect the page quickly when the user clicks the browser back button in asp.net

我正在将应用程序构建为服务器客户端概念,其中服务器是asp.net应用程序。 我想做的是

  1. 用户输入链接并在登录页面中提供登录详细信息。
  2. 身份验证后,用户将被重定向到主页,即主页和子页面。
  3. 现在,当我单击``退出''按钮(在主页上可用)时,会话将被清除并重定向回登录页面。
  4. 但是,当我尝试单击浏览器中的“后退”按钮时,我已经看到了上一页,几秒钟后我被重定向回登录页面。

我是否可以知道原因,当单击浏览器的后退按钮时,是否将触发页面加载事件,或者屏幕背后的进程是什么?如何使页面快速重定向。

我也上网冲浪,发现为了避免缓存页面,我在所有页面和母版页中添加了内容,但没有使用它。 它保持不变。

就像您说的那样,您需要通过设置cache-control: no-cache标头来确保不缓存上一页,您可以在ASP.NET中使用以下命令执行此操作:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

实际上,所有浏览器都很难进行浏览器缓存。 即使执行此操作,您也不能100%地确定它不会被缓存(浏览器会自己处理,而不管您告诉他们什么,但这应该涵盖大多数基础):

        Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d);
        Response.Expires = -1500;
        Response.CacheControl = "no-cache";
        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.Cache.SetCacheability(HttpCacheability.NoCache);

现在也不要认为那是足够的。 Firefox喜欢使用Url进行缓存,因此,如果您链​​接到页面,则可能需要通过在其末尾添加时间戳来更改URL。

但是,如果不是引起问题的缓存,则可以执行一些服务器端逻辑。 例如,如果会话在后面的代码中不存在,则在后面的代码中重定向,这将在加载任何页面之前重定向。 如果此后页面仍然加载,则肯定是浏览器缓存问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM