代码之家  ›  专栏  ›  技术社区  ›  bingles

IE7经典ASP缓存

  •  4
  • bingles  · 技术社区  · 15 年前

    我有一个经典的asp网站,它使用会话变量来存储登录状态,如userid、isloggedin等。在注销时,会重置会话变量,并调用Session.adward(),然后重定向到登录页面。在IE7中,我注意到在注销后,我可以输入一个以前访问过的url,并查看注销前它的状态的缓存版本。点击ctl-f5将再次从服务器重新加载并重定向到登录页面。这是我希望发生的行为,即使在没有ctl-f5的情况下键入url也是如此。有人知道如何获得这种行为吗?

    4 回复  |  直到 15 年前
        1
  •  4
  •   mkoryak    15 年前

    设置“无缓存”标头,以便页面不会首先被缓存。见:

    http://support.microsoft.com/kb/234067

        2
  •  2
  •   NobodyMan    15 年前

    我认为mkoryak的答案(不使用缓存头)似乎是最好的。如果希望某些页面仅在用户登录时显示,最好的方法是指示浏览器不要缓存该页面。此外,调整Cookie和使用javascript等方案确实决定了客户端的登录状态,这只是重新发明轮子。

    Response.Expires 标题设置为您认为合适的值(我认为以分钟为单位)。

        3
  •  1
  •   LiamGu    15 年前

    我以前也遇到过类似的问题,但每当我点击该页面上的链接时,它就会要求我重新登录。

    您可以尝试重置sessionID=“”或sessionID=“XYZ”,并使XYZ成为您的代码在注销时忽略的内容。

        4
  •  0
  •   Pete Duncanson    15 年前

    您可以不发送缓存,但这只是为了获得所需的性能而进行的性能测试。我更喜欢Liams的建议,并确保您在该页面上所做的一切都需要您登录,这样就没有人可以做任何他们不应该做的事情。如果它是一个电子邮件系统或类似的系统,人们“可以”查看其他人缓存的电子邮件,那么在这些情况下,是的,不缓存敏感信息是一种方法(例如,默认情况下,您不能缓存HTTPS页面)。

    您还可以在头部包含一些javascript,用于检查是否存在“登录”cookie。这将在每次加载页面时运行,如果不存在cookie,那么JS可以将您重定向到登录页面。不是100%的傻瓜,但足够好。您的注销页面需要清除此cookie,然后登录页面设置它。