在HttpWatch的帮助下,我试图找出GMail如何实现Comet.
我使用两个帐户登录GMail,一个在IE中,另一个在Firefox中.在GMail中使用"WASSUP"等一些神奇的词语在GMail中聊天.然后,我注销两个GMail帐户,过滤任何http内容而不使用"WASSUP"字符串.结果显示哪个HTTP请求是流式传输通道.(注意:我必须注销.否则,永无止境的HTTP不会在HttpWatch中显示内容.)
结果很有趣.流通道的URL如下:
https:// mail/channel/bind?VER = 8&at = xn3j33vcvk39lkfq .....
毫无疑问,GMail使用IFRAME进行IE浏览.Http内容以" <html><body>" 开头.
最初,我猜测GMail在Firefox中使用多部分XmlHttpRequest进行Comet.令我惊讶的是,响应标头没有"multipart/x-mixed-replace"标头.响应标头如下:
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Date: Sat, 20 Mar 2010 01:52:39 GMT
X-Frame-Options: ALLOWALL
Transfer-Encoding: chunked
X-Content-Type-Options: nosniff
Server: GSE
X-XSS-Protection: 0
Run Code Online (Sandbox Code Playgroud)
不幸的是,HttpWatch不会告诉HTTP请求是否来自XmlHttpRequest.内容不是HTML而是JSON.它看起来像是对XHR的响应,但是如果没有multipart/x-mixed-replace,这对Comet不起作用,对吗?
还有什么办法可以弄清楚GMail如何实现Comet?
更新: 经过进一步调查,我相信GMail以这种方式实现了Comet:1)在IE中,它使用了forever-hidden-iframe; 2)在Firefox中,它使用forever-XHR而不使用multipart/x-mixed-replace标头.客户端将在条件(readyState == 3)OR(readyState == 4)中响应.也就是说,处于交互状态和完整状态.
我正在尝试通过使用开发人员工具控制台监控网络来调试Internet Explorer 10的问题,但我遇到了奇怪的行为 - 有时控制台只是关闭而且所有记录的流量都丢失了.
更确切地说,呼叫序列如下(这实际上是标准的SAML 2.0身份验证流程,IDP上的客户端证书登录):
请注意,初始访问后的所有内容都会自动发生,用户无需单击任何链接或提交某些表单.
自动提交POST表单是这样的:
<html>
<head>
... some head data here...
</head>
<body onLoad="document.forms[0].submit()">
<form name="auto.submit.form">
... some form fields here...
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
问题出现在第2点之后 - 开发人员工具控制台刚关闭但这似乎不会影响浏览器的实际工作.
我也试过HttpWatch Professional - 我得到了同样的效果 - 插件只是停止录制或完全关闭.在这种情况下我不能使用Fiddler,因为它阻止我调试实际问题(即当启用Fiddler时它可以工作).此问题也是IE特有的,因此我无法使用其他浏览器的开发人员工具.
关于这个的任何想法/提示?
更新:我想我至少知道了一部分问题:当导航到不同区域时,开发人员工具窗口关闭.即在我的情况下,步骤2中的主机位于Internet区域,而来自本地Intranet区域中其他步骤的主机,然后在从第2点到第3点的导航完成后关闭开发工具窗口(而不是重定向时)从1到2完成).不同之处在于,第一个是通过javascript和自提交表单完成的,而另一个只是302重定向响应.
将所有站点添加到本地Intranet区域后,问题停止发生.仍然是一个谜,似乎是一个IE问题而不是开发工具问题,因为HttpWatch似乎也受其影响.
internet-explorer developer-tools httpwatch internet-explorer-10
我正在寻找可用于调试Web应用程序的工具.我已将搜索范围缩小到以下工具:
如果你们中的一些人有这些工具的经验可以讨论他们的优点和缺点(你喜欢的功能,或者你认为某些工具中缺少但存在于其他工具中),那将是很好的.我在HTTPWatch和Fiddler之间主要混淆,我我更喜欢Fiddler(免费),如果它可以满足所有或大部分HTTPWatch的功能(但是我愿意为HTTPWatch付费,如果值得的话).
PS - 我知道HTTPWatch和Fiddler比其他两个工具强大得多(如果你不同意,请告诉我).我相信你们中的大多数人都会想要更多关于这些工具的详细信息,但是如果你们能够比较这些工具,请考虑更广泛的视角,将它们作为一般工具进行比较.