我有一个经典的asp网站,它使用Session变量来存储登录状态,即。注销时,重置会话变量并调用Session.Abandon(),然后重定向到登录页面。在IE7中,我注意到在注销后我可以输入以前访问过的URL,并在注销之前查看其状态的缓存版本。点击ctl-f5将再次从服务器重新加载并重定向到登录页面。这是我想要发生的行为,即使在没有ctl-f5的情况下键入了url。有谁知道如何得到这种行为?
答案 0 :(得分:4)
设置no-cache标头,以便首先不缓存页面。见:
答案 1 :(得分:2)
我认为mkoryak的答案(使用无缓存标头)似乎最好。如果您希望仅在用户登录时才能看到某些页面,最好的方法是指示浏览器不要缓存页面。此外,诸如调整cookie和使用javascript等方案确定客户端上的登录状态只是重新发明轮子。
如果你想利用一些缓存并且你的页面不是不断更新的东西,那么一个很好的折衷方案就是将Response.Expires
标题设置为你认为合适的某个值(我认为这是以分钟为单位测量的)。
答案 2 :(得分:1)
之前我遇到过类似的问题,但每当我点击该页面上的链接时,都会要求我重新登录。
您可以尝试重置sessionID =“”或sessionID =“XYZ”,并在注销时使代码忽略XYZ。
您也可以尝试设置无缓存标头。
答案 3 :(得分:0)
你可以发送no-cache,但是为了得到你想要的东西而安静的性能。我更喜欢Liams建议并确保你从该页面做的所有事情都要求你登录,这样就没有人可以做任何他们不应该做的事。如果它的电子邮件系统虽然或类似,人们“可以”查看其他人缓存的电子邮件,在那些情况下然后是,不缓存敏感信息是什么(例如,默认情况下你不能缓存HTTPS页面) )。
你还可以在头部包含一些javascript,它可以检查“登录”cookie是否存在。这将在每次加载页面时运行,如果不存在cookie,则JS可以将您重定向到登录页面。不是百分之百的傻瓜证明,但足够好。您注销页面需要清除此cookie并登录页面设置它。