最近、一部のユーザー エージェントが、ユーザーが実際に物理的に 2 回トリガーしなくても、同じ POST 要求を繰り返すという問題に気付きました。
さらに調査した結果、これは、リクエストがロードバランサーを通過し、サーバーがリクエストを処理するのに長い時間がかかった場合にのみ発生することに気付きました。パケット キャプチャ セッションは、クライアントに TCP リセットを送信することにより、5 分間のタイムアウト後にロード バランサーが接続をドロップすることを最終的に明らかにしました。ただし、クライアントはユーザーの介入なしで自動的に要求を再送信しました。
この動作は、Java、Firefox、および IE 8 の Apache HTTP クライアントで観察されました (テストするために他のブラウザーをインストールすることはできません)。これにより、この動作は HTTP 標準の一部であると思われますが、Google で検索するのは簡単ではありません。
また、これは最初のリクエストがキープアライブ TCP 接続を介して送信された場合にのみ発生するようです。