次のシナリオを確実に再現できます。
- サーバーにAJAXリクエストを送信する小さなHTMLページを作成する(HTTP POSTを使用)
- ネットワークから切断して再接続する
- 失敗後にIEが生成するパケットを監視する
ネットワーク接続が失敗した後、IEは次のAJAX要求を行いますが、HTTPポストを行うときはHTTPヘッダーのみを送信します(本文は送信しません)。これは部分的なリクエストに過ぎないため、サーバーであらゆる種類の問題を引き起こします。Bingでこの問題をググると、AJAXを使用した「ランダムサーバーエラー」または原因不明のAJAXの失敗について不満を言う人がたくさんいます。
IEは(他のほとんどのブラウザーとは異なり)常にHTTP POSTを2つのTCP / IPパケットとして送信することを知っています。ヘッダーと本文は別々に送信されます。失敗の直後の場合、IEはヘッダーのみを送信します。IEがペイロードを送信することはなく、サーバーは最終的にタイムアウトで応答します。
だから私の質問は-なぜそれがこのように振る舞うのですか?HTTP仕様に基づいて間違っているようで、他のブラウザはこのように動作しません。単なるバグですか?確かに、これは深刻なAJAXベースのWebアプリケーションに大混乱をもたらします。
参考情報:
1分より短いHTTPキープアライブタイムアウトによってトリガーされる同様の問題があり、ここに記載されています。