我们能够可靠地重现以下情景:
在网络连接失败后,IE 发出下一个 AJAX 请求,但在发送 HTTP 消息时只发送 HTTP 头(而不是主体)。这会导致服务器上出现各种各样的问题,因为它只是部分请求。用 Bing 搜索这个问题,你会发现很多人抱怨使用 AJAX 或无法解释的 AJAX 故障导致“随机服务器错误”。
我们知道 IE (不像大多数其他浏览器)总是以两个 TCP/IP 数据包的形式发送一个 HTTP POST。标头和正文分别发送。在这种情况下直接失败后,IE 只发送头文件。IE 从不发送负载,服务器最终会响应一个超时。
所以我的问题是,为什么会这样?基于 HTTP 规范和其他浏览器不这样做似乎是错误的。这只是一个小错误吗?这肯定会对任何严肃的基于 AJAX 的 Web 应用程序造成严重破坏。
参考资料:
还有一个类似的问题,由 HTTP keep-alive 超时触发,超时时间短于1分钟,这里有文档说明: