我有一个网站,我已经添加了在服务器上生成的动态javascript代码。生成的代码是一个图像文件,其中一些guid作为查询字符串。我使用Handler来创建js响应,同时我为新访问者分配Session唯一值,这样我就可以区分那些已经在网站上冲浪的用户。除了Internet Explorer之外,所有浏览器都会在初始站点的回发期间保存Session,每次为现有客户生成新的Guid。
有什么办法可以解决吗?为什么会这样?
答案 0 :(得分:5)
您网址的任何部分是否包含下划线?我之前看到过这会导致IE和会话状态出现问题,特别是当相同的代码在其他浏览器中正常工作时。
<强>加成强>
根据您的评论,您的网址(很可能是主机名)包含下划线。虽然你使用的所有其他浏览器都可以应对,但IE不会 - 但是,在它的防御中(我通常不会为IE辩护),下划线是DNS主机名中的非法字符。
我猜你正在访问一个本地机器,它的NETBIOS名称包含一个下划线,例如OFFICEPC_12。
作为解决方法,您可以尝试
将服务器名称替换为其IP地址,例如http://192.168.0.55/mypage.aspx
使用此电脑的别名在HOSTS文件中添加一个条目,该别名没有下划线
真正的最佳解决方案,更改服务器的名称!
答案 1 :(得分:2)
最后在@CResults和@Alex Key的帮助下,我发现IE默认阻止第三方cookie,这是我项目中的一个案例。
修复就像向处理程序添加p3p HTTP标头一样简单......
HttpContext.Current.Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
感谢你们两个!!!