Internet explorer IE8没有正确地跨域应用cookie——仅在一台计算机上

Internet explorer IE8没有正确地跨域应用cookie——仅在一台计算机上,internet-explorer,cookies,internet-explorer-8,setcookie,Internet Explorer,Cookies,Internet Explorer 8,Setcookie,我有一个有趣的问题,我完全被难住了 我有一段我构建的生产代码,它读取由另一个部门管理的机器设置的IBM LTPA令牌cookie,验证它,并使用它登录到我的组管理的系统(通过设置一些特殊cookie)。这个单点登录过程对最终用户完全透明,并且已经在所有浏览器的生产环境中运行了好几年 最近,我注意到它在我的IE8开发机器上不能正常工作。我最近从Vista升级到Windows7。我不确定这是不是在升级之前还是之后在我的机器上不起作用,但是,因为它已经工作了这么长时间,我没有理由定期测试它。Firef

我有一个有趣的问题,我完全被难住了

我有一段我构建的生产代码,它读取由另一个部门管理的机器设置的IBM LTPA令牌cookie,验证它,并使用它登录到我的组管理的系统(通过设置一些特殊cookie)。这个单点登录过程对最终用户完全透明,并且已经在所有浏览器的生产环境中运行了好几年

最近,我注意到它在我的IE8开发机器上不能正常工作。我最近从Vista升级到Windows7。我不确定这是不是在升级之前还是之后在我的机器上不起作用,但是,因为它已经工作了这么长时间,我没有理由定期测试它。Firefox3.5和Chrome4dev在同一台机器上都能正常工作。这台机器上XP SP3虚拟机上的IE6工作正常。IE8在多台家用计算机上工作正常(Windows Server 2008和Windows 7)

出于诊断目的,我清除了我的devie8(WinInet缓存)中的所有缓存数据,以便从头开始。我启动了Fiddler来跟踪这个过程,并确定什么不起作用。我的发现很有趣,我无法解释

在登录初始站点(我们称之为ltpa.domain.com)后,会话Cookie将按预期使用Set Cookie头从服务器向下推送。我验证域是否正确设置为.domain.com,路径是否为/。登录后来自浏览器的所有后续请求都会按预期将所有cookie和每个请求一起推回到服务器。事实上,这是一个门户网站,也可以从portal.domain.com中检索到一些额外的内容;所有cookie也正确地传递到该服务器

现在来看有趣的一点——当我向myserver.domain.com发出请求时——ltpa.domain.com设置的域级cookie不会推送到myserver.domain.com,即使它们应该推送到myserver.domain.com。如果cookie丢失,单点登录过程会自动重定向回ltpa.domain.com(并将cookie推送到ltpa登录进程用于重定向的客户端)——myserver设置的域级cookie不会被推回到ltpa.domain.com

同样,我知道这只发生在我的开发机器上的一个IE8实例上。这个过程每天使用数千次,用户群相当大,我们没有收到来自最终用户的其他投诉,因此没有迹象表明这是IE8的系统性问题或类似问题

在我看来,这种行为将myserver.domain.com和ltpa.domain.com视为单独的域,尽管它们不是

有两点可能值得一提,但也可能是转移注意力,因为它一直都是这样,而且从来没有引起过任何问题

  • DNS在这里有点奇怪。LTPA.domain.com解析为外部IP。然而,myserver.domain.com解析为内部IP。在该IP上进行反向查找会得到内部DNS名称——比如myserver.internal.domain.com。我推测IE8可能正在进行某种反向查找以防止基于DNS的攻击——因此我修改了我的主机文件,并将myserver.domain.com指向外部IP以进行测试。我在Fiddler中验证了请求将转到外部IP,但这与cookie没有任何区别。它们仍然没有被传递

  • 以前,myserver.domain.com位于IE WinInet安全配置页面中的“受信任站点”下。我删除了它和其中的另一个站点。让我们将这台机器称为my2.domain.com;这台机器巧合(或者可能不是?)也没有通过ltpa.domain.com设置的域Cookie。在本例中,我不需要通过Cookie,但我测试了它,以查看此问题是否影响了其他计算机。在IE状态栏中,ltpa.domain.com、portal.domain.com和myserver.domain.com都显示在“Internet”区域下。奇怪的是my2.domain.com仍然在状态栏中显示“受信任的站点”,即使它未在对话框中列出??是的,我在进行更改后重新启动了

其他注意事项

  • 我知道IE和非.com域、引用的cookie值和其他cookie异常的其他问题——在stackoverflow和Interweb上的其他地方提到过。这些都不适用。我已经阅读了Eric Law关于cookie内部的IEInternals文章--

  • IE中没有启用任何时髦的插件。只有Flash、Silverlight、Live ID登录助手和Fiddler2

  • 没有用于筛选特定于我的域的内容的InPrivate规则

  • 因为我在笔记本电脑上,所以我在家里的网络上尝试了IE8(重启后)来排除DNS问题。我在家里也经历了同样的行为,所以就我所知,时髦的DNS不是问题

  • 我多次仔细检查了所有IE设置,认为我可能错过了一个模糊的cookie设置。隐私设置是“中等”的,没有特殊处理的网站

  • 使用开发工具,我已经确保“始终从服务器刷新”未选中

  • 我不认为这是我可以向微软报告的任何事情,因为我不能在其他任何地方重现这个问题

因此,在这一点上,我不知所措。除了在IE8中打开某种我不知道的诊断模式,或者有代码进行调试……我已经没有好主意了

我想我要么遇到了一个bug,要么注册表设置或类似的设置被修改了,要么某个地方已经损坏了


有什么想法吗?

你需要非常小心“域”这个词,因为很多人用它来表示许多不同的意思