我们能够可靠地重新创建以下情况:
- 创建一个小的HTML页面,该页面向服务器发出AJAX请求(使用HTTP POST)
- 断开网络连接,然后重新连接
- 监视失败后IE生成的数据包
网络连接失败后,IE将发出下一个AJAX请求,但在执行HTTP发布时仅发送HTTP标头(而不是正文)。由于这只是部分请求,因此会在服务器上引起各种问题。Google与Bing有关此问题,您会发现很多人抱怨使用AJAX或“无法解释的AJAX故障”导致的“服务器随机错误”。
我们知道IE(与大多数其他浏览器不同)总是将HTTP POST作为两个TCP / IP数据包发送。标头和正文分别发送。在发生故障后,IE仅直接发送header。IE从不发送有效负载,服务器最终以超时响应。
所以我的问题是-为什么它会这样表现?基于HTTP规范,这似乎是错误的,其他浏览器却没有这种行为。这仅仅是一个错误吗?当然,这会在任何基于AJAX的严重Web应用程序中造成严重破坏。
参考信息:
还有一个类似的问题,是由少于1分钟的HTTP保持活动超时触发的,记录在这里: