我有一个经典的ASP网站,使用会话变量来存储登录状态ie。 userid,isloggedin等。在注销时,会话变量被重置,并且Session.Abandon()被调用,然后被重定向到登录页面。在IE7中,我注意到在注销后,我可以输入以前访问过的URL并查看在注销之前似乎是其状态的缓存版本。点击ctl-f5将再次从服务器重新加载并重定向到登录页面。这是我想要发生的行为,即使没有ctl-f5输入url也是如此。有谁知道如何得到这种行为?IE7经典ASP缓存
4
A
回答
4
设置no-cache标头,以便页面不首先被缓存。见:
1
我以前遇到过类似问题,但每当我点击该网页上的链接,它让我重新登录
你可以尝试要么复位会话ID。 =“”或sessionID =“XYZ”,并使XYZ在注销时忽略您的代码。
你也可以尝试设置no-cache标头。
0
你可以发送no-cache,但是这只是一个安静的表现,只是为了得到你想要的东西。我更喜欢Liams的建议,并确保您在该页面上做的所有事情都需要您登录,这样,没有人可以做任何他们不应该做的事情。如果它的电子邮件系统虽然或类似,但人们“可以”查看其他人的电子邮件,那么在那些情况下是的,而不是缓存敏感信息是要走的路(例如,你不能默认缓存HTTPS页面)。
您还可以在头部添加一些javascript,以检查是否存在“已登录”Cookie。这会在每次加载页面时运行,如果没有cookie存在,那么JS可以将您重定向到登录页面。不是100%的证明,但足够好。你注销页面需要清除这个cookie,并在你的登录页面设置它。
2
我认为mkoryak的答案(使用no-cache标头)似乎是最好的。如果您只想在用户登录时看到某些页面,最好的方法是指示浏览器不要缓存该页面。此外,诸如调整cookie和使用javascript等方案确定客户端的登录状态只是重新发明轮子。
如果你想利用一些缓存,并且你的页面不是不断更新的,那么一个很好的折衷办法是将Response.Expires
标题设置为你认为合适的值(我认为它是以分钟为单位的度量)。
相关问题
- 1. ie7和经典asp中的UTF8问题
- 2. 经典Asp + Ajax进销存
- 3. 经典asp cint
- 4. swfupload +经典asp
- 5. XPath经典ASP
- 6. 经典ASP:在应用上下文中缓存XML文档
- 7. 经典ASP应用范围的初始化和对象缓存
- 8. 是否有经典的ASP的缓存脚本?
- 9. 经典asp中的split()asp
- 10. 经典asp问题
- 11. 经典ASP连接
- 12. 经典ASP加密
- 13. 经典ASP Response.Status 500
- 14. 在ASP经典VBScript
- 15. 经典的asp - cdonts
- 16. 经典Asp日期
- 17. 经典的ASP - BOF
- 18. DotNetOpenAuth +经典ASP + oAuth
- 19. 的VBScript/ASP经典
- 20. 了解经典ASP
- 21. 重写 - ASP经典
- 22. 生成ASP经典
- 23. AzMan和经典ASP
- 24. 模拟经典ASP
- 25. CalDAV和经典ASP
- 26. 使用ASP经典
- 27. 参考经典ASP
- 28. 经典ASP会话ID Cookie生存期
- 29. 经典ASP中的存储过程
- 30. 我在经典asp网站上从经典asp转换为.NET