Internet Explorer显示缓存页面(需要查看cookie)

时间:2011-04-15 00:05:32

标签: c# internet-explorer-8 asp.net-4.0

我的网络服务器中有一个文件夹,其中有一些aspx页面只有在存在某个cookie时才能访问。

在page_load事件中,我正在检查此cookie是否存在,如果没有重定向到Default.aspx。这适用于Google Chorme和FireFox等浏览器(3,我还没有测试过2)。但是......出于某种原因,IE会发送某种cookie,因为我的网站认为有一些cookie可供选择..

所以我在页面上添加了一个按钮来删除cookie。但根据我的代码(这是正确的)cookie不存在。我的假设是IE缓存页面。因此,在擦除缓存后,我的页面代码正常工作,您将被重定向到Default.aspx。

如果该cookie不存在,是否有某种方法可以拒绝访问该文件夹,以便IE显示的页面不起作用?

有点难以解释。

我的cookie检查代码是这样的:

protected void Page_Load(object sender, EventArgs e)
{
   {
      SimpleAES decrypt = new SimpleAES();
      //Check for Authentication Cookie
      HttpCookie auth_Cookie = new HttpCookie("WEB_AUTH");
      auth_Cookie = Request.Cookies["WEB_AUTH"];
      if (auth_Cookie != null)
      {
         //Some code to execute if Cookie exists and holds correct values
      }

      else
      { 
         //If there isn't a cookie, redirect to login.aspx
         Response.Redirect("~/Default.aspx"); 
      }
   }
}

欢迎提供任何帮助! 感谢

ADDED 我只是希望如果该cookie不可用,则不会显示文件夹“XXX”中的这些页面。但IE从它的本地缓存加载页面,而不是检查它是否可以实际加载它。怎么办?

修改

“XXX”文件夹中的页面有1个母版页,这是Cookie检查代码所在的页面。

1 个答案:

答案 0 :(得分:1)

您需要阻止浏览器缓存页面。您应该根据您的要求设置Response.Cache(http://msdn.microsoft.com/en-us/library/system.web.httpresponse.cache(v=VS.100).aspx)。

请注意,理论上浏览器可以完全忽略您的缓存标头并从其自己的缓存加载页面,实际上所有浏览器都尊重缓存标头。