7

POST リクエストは HTML をレンダリングするか、リダイレクトする必要がありますか?

あなたがページ上で更新し、ブラウザーに「データを再度投稿するつもりだ」と通知されるのは嫌いです。

4

2 に答える 2

5

はい。エンティティを送信するか、リダイレクトする必要があります。

(申し訳ありませんが、古いプログラミングジョークは時々出てくる必要があります)。

それはあなたがGETに何か意味のあるものを与えることができるかどうかに本当に依存します、それはそれ自身で立つことは理にかなっています。

例:何かを購入すると、「ありがとう、ヤッダヤッダ注文番号、領収書、ヤッダ」というページが表示されます。

それは303SeeOtherリダイレクトであるはずなので、その情報を含むページを取得します。後でブックマークすることができます。更新すると、GETが更新されます。幸せな日々。

ただし、即時応答をレンダリングするだけで意味があり、それらが更新された場合は実際の操作を繰り返し、ブックマークを付けても意味がない場合があります。これはリダイレクトではありません。

ほとんどの場合、とにかく後者をできるだけ少なくすることを目指してください。何かが失敗したためにフォームに戻さなければならない場合に最も便利です。失敗したフォームのブックマークは誰も望んでおらず、修正が必要なものを修正して続行したいと考えています。

多くのサーバー側システム(ASPなど)は、POSTからリダイレクトするときに302を使用します。これは、厳密には、POSTを再度実行することを意味するはずですが、ブラウザーはほとんど使用しません。代わりに、より明確にしてください。

  1. POSTを再度リダイレクトしたい場合、POSTは別のURIに移動しますが、他の問題がありますが、本当に必要な場合は、307
  2. 結果を説明する何かへのGETでPOSTをフォローアップしたい場合は、303。これは明確に「GETを実行する」ことを意味します。
于 2012-08-28T01:23:11.013 に答える
5

はい、これを避けるために POST の後にリダイレクトすることをお勧めします。

于 2012-08-28T01:18:25.310 に答える