さまざまなHTTP 3XXリダイレクトコードの違いは私には明らかではありません。はい、仕様を読みましたが、ここで標準と実際のプラクティスとの間に矛盾があるようです。
301
リダイレクトコードは十分明確に見えます。これは、リソースが別のURIに永続的に移動されたことを意味し、今後のリクエストではそのURIを使用する必要があります。
また、307
リダイレクトコードも明確に見えます。これは、リダイレクトが一時的であり、今後のリクエストでは元のURIを使用する必要があることを意味します。
しかし、302
と303
の違い、またはどちらが301
と本当に異なるのかはわかりません。 302
は元々一時リダイレクト(307
のような)を目的としていたようですが、実際には、ほとんどのブラウザは303
のようにそれを扱いました。しかし、303
と301
の違いは何ですか? 301
は、リダイレクトがmore永続的であることを意味するはずですか?
選択肢がある場合は、個人的に302を避けることをお勧めします。多くのクライアントは、302に遭遇すると仕様に従いません。一時的なリダイレクトの場合は、GET以外の要求で必要な動作のタイプに応じて、303または307を使用する必要があります。 POST/PUT/DELETEで別の動作が必要な場合を除き、307〜303をお勧めします。
3と307の違いはこれです:
:その他を参照してください。リクエストは正しく受信されますが、リダイレクトURLでGETを使用して結果を取得する必要があります。
7:一時的なリダイレクト。リクエスト全体を新しいURLにリダイレクトする必要があります。投稿データはすべて再投稿する必要があります。
2は307の動作を持つように意図されていましたが、ほとんどのブラウザはそれを303の動作として実装していました(どちらも当時は存在しませんでした)。したがって、これら2つの新しいコードは302を置き換えるために導入されました。
1と303の違い:
1:ドキュメントが移動されます。今後のリクエストでは、新しいURLを使用する必要があります。このURLは廃止されました。
注:このコードには注意してください。ブラウザとプロキシは、非常に積極的なキャッシュを適用する傾向があるため、301で返信すると、誰かがそのURLを再訪するのに時間がかかる場合があります。
:要求は正しく受信されます。 PUT要求はすべて処理されます。 結果のドキュメントはリダイレクトURLから取得できます。今後のリクエストは、元のURLに送信する必要があります。