2010-10-27 194 views
1

我只在IE浏览器中清除会话有问题(我测试过不同版本的IE(IIS 6和7) - 它在Firefox和Opera中运行良好)。
我有4个个小脚本(我告诉代码更好的解释,在那里我有问题):
1的default.asp - 只显示会话值:IE清除会话

<%@LANGUAGE="VBSCRIPT"%> 

<% 
Session.Timeout=60 
Response.Write("Session value: "&Session("site")) 
%> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
</head> 
<body> 
</body> 
</html> 

2. setsession.asp - 设置会话( “网站”)

<%@LANGUAGE="VBSCRIPT"%> 
<% 
Session("site")= "error" 
Response.Redirect("default.asp") 
%> 

3.clearsession.asp - 分配会议(简称 “网站”),以空字符串

<%@LANGUAGE="VBSCRIPT"%> 
<% 
Session("site")="" 
Response.Redirect("default.asp") 
%> 

4.si te.asp - 我不想显示这个网站,如果会议(“网站”)是空字符串

<%@ language="VBScript" %> 
<% 
if Session("site") ="" then 
Response.Redirect("default.asp") 
end if 
%> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body> 
<%Response.Write("Session value: "&Session("site"))%>  
</body> 
</html> 

在即使使sesion被设置为“”,它总是显示site.asp IE(没有按重定向),并显示该会话设置为“错误”。它的行为就像在IE中我无法传递会话值beetwen页面。在Firefox和Opera中,一切都很好。你能解释一下,问题在哪里?它如何解决?

回答

1

会话是服务器端,但IE是客户端,这不会是问题。 可能是IE比其他浏览器缓存更多,因此不需要重新请求某些页面,因此代码无法执行。您可以添加缓存标头来告诉客户端不要缓存。

+0

感谢您的回复。我在site.asp中添加了这段代码,它有帮助:<%Response.CacheControl =“no-cache”%> <%Response.AddHeader“Pragma”,“no-cache”%> <%Response。 Expires = -1%>谢谢 – luk4443 2010-10-27 22:45:46

0

如果问题只出现在IE中,那意味着它是客户端问题。无需修复代码。

检查cookie是否启用且会话正在为其他网站工作。问题出现在您的浏览器设置中。

0

我看到的唯一客户端问题是浏览器缓存。尝试按Ctrl + F5强制刷新以重新发送请求,以查看您是否在IE中观察到相同的行为。

+0

感谢您的回复。是的,问题在于缓存。 Ctrl + F5帮助,但我添加了<%Response.CacheControl =“no-cache”%><%Response.AddHeader“Pragma”,“no-cache”%><%Response.Expires = -1%>和它运作良好。谢谢 – luk4443 2010-10-27 22:50:21