3

当我尝试发送一些 POST 数据时,XMLHttpRequest 对象会导致两个 TCP SYN 数据包。这发生在不到一毫秒的时间内。我无法在任何其他浏览器中重现此行为(使用最新的 Firefox 和 Google Chrome 浏览器测试)。

即使是“异步”标志或超时设置似乎也没有改变这种情况。

问题是当 IE9 发送两个 SYN 时,它们将被服务器的 TCP/IP 堆栈自动确认。但不幸的是,IE9 在第二个流中发送 Post 数据,这意味着 Web 服务器已经在等待第一个套接字上的字节(导致超时)。发生这种情况是因为我们谈论的是可以一次处理一个套接字的单线程 Web 服务器。

有什么建议或想法吗?

我想阻止 IE9 一次建立两个套接字。

无论我是使用 Jquery ajax 函数还是在 java 脚本中自己实现它,都会发生这种情况。

此致

马蒂亚斯

4

2 回答 2

1

我们通过wireshark注意到了同样的事情,IE9自己的F12调试器显示了一个POST,但是来自客户端IE9机器的数据包显示了两个POST...并且服务器也收到了2,这导致我们的应用程序出现不一致的问题服务器端。

版本 9.0.8112.16421,更新版本 9.0.3 (KB 2586448)

我们必须启用 IE8 兼容性标头来停止双帖

<meta http-equiv="X-UA-Compatible" content="IE=8" />

这很奇怪……我们所有的表单都不会发生这种情况,就像 JS 编译器得出了关于如何在不同上下文中执行代码的某些结论一样。

很高兴了解客户端关闭的标头...从长远来看,这可能对我们更好...希望它会在 IE9 中得到解决

于 2011-11-16T23:27:27.317 回答
1

只是一个想法,您可以尝试Connection: close在所有服务器响应中添加一个标头,以确保浏览器为每个请求启动一个新的 tcp 连接。

于 2011-06-01T20:14:56.070 回答