Cookies IE8在弹出窗口中丢失会话cookie

Cookies IE8在弹出窗口中丢失会话cookie,cookies,internet-explorer-8,popup,Cookies,Internet Explorer 8,Popup,我们有一个ASP.NET应用程序,它使用Forms Auth。当用户登录时,将生成会话ID cookie和表单身份验证票证(存储为cookie)。这些是会话cookie,不是永久cookie。当浏览器关闭时,用户可以有效地注销,这是有意且可取的 用户登录后,将使用window.open('location here')弹出一个新窗口。打开的页面实际上是用户在剩余会话中工作的工作区。在此页面中,还使用其他弹出窗口 最近,我们有很多客户(都使用最新版本的IE8)抱怨说,当他们登录时,最初的弹出窗口会

我们有一个ASP.NET应用程序,它使用Forms Auth。当用户登录时,将生成会话ID cookie和表单身份验证票证(存储为cookie)。这些是会话cookie,不是永久cookie。当浏览器关闭时,用户可以有效地注销,这是有意且可取的

用户登录后,将使用
window.open('location here')弹出一个新窗口。打开的页面实际上是用户在剩余会话中工作的工作区。在此页面中,还使用其他弹出窗口

最近,我们有很多客户(都使用最新版本的IE8)抱怨说,当他们登录时,最初的弹出窗口会将他们带回登录屏幕,而不是主页。或者,用户有时可以登录,进入主页(同样,主页位于一个新的弹出窗口中),一切看起来都很好,直到创建了任何其他弹出窗口,并开始再次将他们重定向到登录屏幕

在尝试解决问题时,我使用了好的老提琴手。当问题开始显现时,我注意到浏览器没有发送ASP.NET会话ID会话cookie或Forms Auth ticket会话cookie,即使对登录帖子的响应显然会推下这些cookie

更奇怪的是,如果我按CTRL+N从弹出的窗口中打开一个新窗口,该窗口缺少会话cookie,然后手动键入主页的URL,这些cookie就会神奇地再次出现。但是,随后的
window.open()呼叫将继续中断,不会发送会话cookie并将用户带到登录屏幕

需要注意的是,有时,由于似乎没有什么好的理由,这些用户可以突然登录并正常工作一段时间,然后又恢复到故障状态

现在,我已经确保没有浏览器加载项、插件、工具栏等正在运行。我已将我们的站点添加为受信任站点,并将安全设置降至低,我已将Cookie隐私策略修改为“全部接受”,甚至禁用了自动策略设置,手动强制其接受所有内容并包含会话Cookie。似乎没有任何影响

还要注意,web应用程序驻留在单个服务器上。没有负载平衡、web花园、服务器场、集群等。服务器确实位于ISA服务器后面,但除此之外,它非常简单

我已经搜索了好几天了,还没有找到任何可行的方法。见鬼,有时候我甚至不能可靠地复制它。我发现一些人也有同样的问题,但他们似乎是在引用一个据称在beta版或RC版中修复的问题(例如:)。这些是IE的发布版本,带有最新的补丁

我知道我可以尝试设置永久cookies而不是会话cookies。然而,这对我们的应用程序具有重大的安全影响

更新 当用户被添加为机器上的本地管理员时,问题似乎自动消失了。只有时间才能证明这种变化是否会永久(积极)影响这个问题

是时候抛出ProcMon,看看是否存在资源访问问题了

更新#2 似乎对于一个似乎是单一问题的问题有多个角度。我很久以前就报告过,让用户成为本地管理员似乎有帮助。它确实做到了,对许多用户来说。当然,这不是一个真正的解决方案,但它确实让我们步履蹒跚

然后更多的用户开始报告这个问题,而管理员修复程序也帮不上忙。用户似乎大多是Win7,但Vista也受到了影响。它们似乎也大多是64位安装

正如下面一些成员所建议的那样,将TabProcGrowth设置为0或1(两者都有效)似乎在很大程度上解决了这个问题。所以,我将把我接受的答案转移到第一个提出这个建议的人身上,因为它的影响要大得多


这是一个令人难以置信的令人沮丧的问题,因为它很难重现,并且经常发生在我没有直接联系的用户身上,或者在我找到他们时,它似乎不起作用。我所能说的是,会话合并功能有问题,但我没有太多数据可以提供给Microsoft以找到永久性修复。

这背后有多种可能性-

  • (不得不突然出现!!)。具体来说,寻找受保护的模式行为
  • 这可能是一个实际的问题。更重要的是,通过Ctrl+N快捷方式打开一个新窗口会使cookie在您的案例中神奇地发送
  • IE的旧版本存在问题(我知道您已经声明您的客户正在使用最新版本)。您可能需要查看Microsoft Connect上的详细信息,以获取bug ID和

我从IE 5就知道这个问题,所以我只在模式弹出窗口中使用会话变量。。。 当我打开一个非模式弹出窗口时,我用ASP.NET缓存和新对象集合替换所有会话变量。。。 但这很烦人


其他浏览器(如Firefox)没有这个问题…

这是IE8中的“新”功能

查看下面的IE8博客来了解它

IE8可以使用多个进程来处理x个IE窗口。当您跨越一个进程空间时,您会丢失cookie(Asp.Net会话ID似乎保留在此进程边界上)

我个人认为它坏了或者是个虫子。正如我们所知,当浏览到“同一域目标”时,应该维护并重新发送cookies。IE8具有不同的安全处理行为。。伟大的在我看来,它的行为很糟糕,“即使在另一个窗口中访问同一目标域,也会丢弃cookies”只是一个bug

您可以通过internet e修改IE8使用的进程数