小编Joe*_*oel的帖子

ASP.net会话cookie丢失或删除

我有一个ASP.NET 2.0站点,在会话中存储用户的ID以表明他们已登录.在某些情况下,用户似乎没有保持登录状态.我一直在监视Fiddler中的流量,以及一些细节我发现:

  • 在运行IE7和项目经理的笔记本电脑运行IE7时,我的旧笔记本电脑上的问题是100%可重复的.在运行FF的当前笔记本电脑上运行IE7或任何这些笔记本电脑时,问题都不会发生.
  • 问题仅发生在生产中 - 而不是在开发,内部分段或客户端分段上.生产是唯一的负载平衡环境,但上面提到的可重复性使我怀疑负载平衡是一个因素.
  • 当设置Session("ID")= 1的页面将响应发送回客户端时,我可以在所有情况下看到"Set-Cookie"标题,即创建ASP.Net_Session_Id cookie(并且它是HttpOnly).
  • 对服务器的后续请求将在未显示问题的计算机上的标头中发送该cookie,但不在计算机上发送,因此要么删除cookie,要么忽略"Set-Cookie"标头.
  • 登录的方式如下:www.DomainX.com上的页面有一个iframe.iframe的来源是login.DomainY.com上的一个页面.login.DomainY.com提供的各种页面引导用户完成登录/注册过程.login.DomainY.com的最后一步是重定向到www.DomainX.com上的页面,包括查询字符串中的用户ID.www.DomainX.com上的此页面通常将ID存储在会话中,然后运行一些JS以将顶级文档重定向到新页面,从而将用户从iframe中取出.这是一个已经工作了几年的过程,具有DomainX.com的几个值.这里可能有所不同的一点是,在这种情况下,JS只是破坏iframe而某些包含div.
  • 我发现问题发生的情况与不存在问题的情况之间的另一个区别在于Google Analytics(分析)Cookie.login.DomainY.com/FinalStep.aspx将其重定向到iframe内的www.DomainX.com/SaveTheID.aspx有所不同.如果没有出现此问题,SaveTheID.aspx请求会包含各种Google Analytics Cookie(__ utma,__ utmz等).当问题确实发生时,此请求不包括所有GA cookie(它缺少__utma,__ utmz和__utmb).
  • 生产是login.DomainY.com在SSL下运行的唯一环境,所以我认为这可能是相关的.但我们暂时设置login.DomainY.com的暂存副本以使用SSL,但这没有任何效果.

有什么想法会导致这种情况吗?

编辑:生产环境包含www.DomainX.com和DomainX.com的域.还存在另一个已知问题,即没有为这两个域设置cookie.这可能是相关的,但是在修复产生之前我将无法进行测试.

asp.net cookies session internet-explorer

7
推荐指数
1
解决办法
5095
查看次数

标签 统计

asp.net ×1

cookies ×1

internet-explorer ×1

session ×1