3

いくつかのPOSTデータを送信しようとすると、XMLHttpRequestオブジェクトによって2つのTCPSYNパケットが発生します。これは1ミリ秒未満で発生します。他のブラウザ(最新のFirefoxおよびGoogle Chromeブラウザでテスト済み)ではこの動作を再現できません。

'asynch'フラグまたはタイムアウト設定でさえ状況を変えないようです。

問題は、IE9が2つのSYNを送信すると、それらがサーバーのTCP/IPスタックによって自動的に承認されることです。ただし、残念ながら、IE9は2番目のストリームでPostデータを送信します。これは、Webサーバーが最初のソケットでバイトをすでに待機していることを意味します(タイムアウトが発生します)。これは、一度に1つのソケットを処理できるシングルスレッドのWebサーバーについて話しているために発生します。

何か提案やアイデアはありますか?

IE9が一度に2つのソケットを確立するのを防ぎたいです。

これは、Jquery ajax関数を使用するか、Javaスクリプトで自分で実装するかに関係なく発生します。

よろしくお願いします

マティアス

4

2 に答える 2

1

私たちはwiresharkを介して同じことに気づいています、IE9自身のF12デバッガーは単一のPOSTを示していますが、クライアントIE9マシンから出てくるパケットは2つの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 に答える