私は簡単なCRUDアプリケーションでダブル投稿を避けるためにpost/redirect/getパターンを実装したウェブページを持っています。ポストリダイレクト - Internet Explorerで入手
意図要求/応答シーケンスはここにある:
- ブラウザは
POST
- サーバを介してデータを送信ステータス
302 Moved Temporarily
で応答し、 - ブラウザは
GET
介してリダイレクトを以下
- サーバーは更新されたページで応答します
Location
ヘッダ、DBを変更
これは、Chromeでの動作の仕組みです。
しかし、Internet Explorer 9では、ステップ3がPOST
として送信されます(フォームデータの完全なセットを含む)。どうして? GET
を使用するにはどうすればよいですか?
リダイレクトは、クエリ文字列とは別に、フォームターゲットと同じ場所に追加する必要があります。
私が試してみた:レンダリングモード(IE7、IE8、IE9、癖、標準のcompat)のすべての利用可能な
- を
- フルDOCTYPE
- 相対URLまたは絶対1でもし
Location
ヘッダ - HTTPステータス303(すなわち、任意の違いを行う場合だけを参照する)
最も単純な例が可能で、DOCTYPEは全くありません。IE9が実際に2回目の同じPOST要求を送信していることを3倍していますか?途中でプロキシやその他何もありませんか? – Jon
さて、デバッガのネットワークタブを見ると、これが私に伝えられます。サーバーはPOSTも受信します。 HTTP/1.1状態の場合は – Tomalak
RFC 2616、[状態コード定義](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)の場合は10.3.3節で、ブラウザが '302'レスポンスは使用されているメソッドを変更しないでください* POSTはPOSTのままでなければなりません。 IEは実際にそれを正しく行っています。しかし、 '303' *はGETになるはずなので、IEはあなたの最後の箇条書きによれば*間違っています。 –