javascript - IE8 NTLM Ajax 编号 "Content-Length: 0"后 cometD Fiddler

标签 javascript ajax internet-explorer ntlm content-length

我遇到一个问题,用户登录 NTLM(通过 localhost:8585/test.ntlm)并且浏览器尝试通过 cometD 进行握手。这适用于除 WinXP 上的 IE8(适用于 Win7 上的 IE8)之外的所有浏览器。

正如许多人所说,当 IE8 认为它正在浏览 NTLM 页面时,它不会发送响应正文,因为它预计会出现 401 错误,这似乎会发生什么。然而,当他们登录并提示访问/test.ntlm 页面时,授权就已经发生了。我已经使用 Fiddler 实际查看了 IE8 的请求 header ,奇怪的是,当 fiddler 实际上打开时,一切都正常工作,并且在服务器上看到的请求 header 与 fiddler 未打开时的不同。

IE8 与 Fiddler

[Accept][text/javascript, text/html, application/xml, text/xml, */*]
[Accept-Language][en-us]
[x-prototype-version][1.6.0.2]
[Referer][http://nldo-82-2.eur.ad.sag:8585/test.ntlm]
[x-requested-with][XMLHttpRequest]
[Content-Type][application/json; charset=UTF-8]
[Accept-Encoding][gzip, deflate]
[User-Agent][Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)]
[Host][nldo-82-2.eur.ad.sag:8585]
[Content-Length][0]
[Connection][Keep-Alive]
[Cache-Control][no-cache] -- Only added in IE
[Cookie][JSESSIONID=1ckx2gei602sg]
[Authorization][NTLM TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFAs4OAAAADw==] --Only happens in IE8 when Fiddler isn't on

IE8 与 Fiddler

[Accept][text/javascript, text/html, application/xml, text/xml, */*]
[Accept-Language][en-us]
[x-prototype-version][1.6.0.2]
[Referer][http://nldo-82-2.eur.ad.sag:8585/test.ntlm]
[x-requested-with][XMLHttpRequest]
[Content-Type][application/json; charset=UTF-8]
[Accept-Encoding][gzip, deflate]
[User-Agent][Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)]
[Host][nldo-82-2.eur.ad.sag:8585]
[Content-Length][177]
[Connection][Keep-Alive]
[Pragma][no-cache]
[Cookie][JSESSIONID=1qpdgov0w07pf]

正如我们所看到的,最大的区别是,据我所知,没有 Fiddler 的 IE8 具有由浏览器添加的授权 header 。

我不知道该怎么办,我已经尝试了其他 stackoverflow 主题中列出的很多 MS 修补程序,但这些似乎都不起作用。我尝试按照一些人的建议返回 401,尽管浏览器仍然期望 401 发送响应正文,但这也不起作用。只是奇怪的是,它在 Win7 的 IE8 中完美运行,但在 WinXP 版本中却不行。请注意,Win7 的浏览器版本为 8.0.7601.17514,WinXP 的浏览器版本为 8.0.6001.18702。

欢迎任何和所有建议。

最佳答案

尝试将方法更改为 GET 并查看效果如何?

我刚刚花了 2 天时间研究 ajax POST 请求超时的问题。经过一番搜索,发现是SSO NTLM身份验证问题。

Internet Explorer 检查每个发布请求的 NTLM 身份验证。

Fiddler 缓存 NTLM Auth 并允许请求通过,不会出现问题。

关于javascript - IE8 NTLM Ajax 编号 "Content-Length: 0"后 cometD Fiddler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19693685/

相关文章:

javascript - asp.net mvc 将 Json 对象从 View 传递到 Controller

html - 图像被裁剪了一点,只是在 IE 中

IE 11 中的 CSS 模糊

javascript - 如何强制 google chrome/firefox 使用 Internet explorer web 浏览器控件

javascript - 使用for循环将多条记录插入数据库

javascript - 如何检查正确加载的facebook sdk

javascript - Firefox 如何在没有用户输入的情况下进入全屏

javascript - 为什么我的函数返回这个奇怪的输出?

javascript - 不返回任何内容的 web 服务的推荐返回类型(使用 jquery 调用)

javascript - 使用 "jQuery Form Plugin"手动发送拖放文件