【问题标题】:IE7 Classic ASP CacheIE7 经典 ASP 缓存
【发布时间】:2009-07-29 22:09:57
【问题描述】:

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

【问题讨论】:

    标签: asp-classic session-variables


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      如果您想利用一些缓存并且您的页面不是不断更新的,那么一个很好的折衷办法是将Response.Expires 标头设置为您认为合适的某个值(我相信它以分钟为单位)。

      【讨论】:

        【解决方案3】:

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

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

        您也可以尝试设置无缓存标头。

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 2010-09-15
            • 2015-08-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-01-24
            • 2015-05-06
            相关资源
            最近更新 更多