HTTPリダイレクトコードの違い 質問する

HTTPリダイレクトコードの違い 質問する

さまざまな HTTP 3XX リダイレクト コードの違いがよくわかりません。仕様は読みましたが、標準と実際の実践の間には矛盾があるようです。

リダイレクト301コードは十分に明確なようです。これは、リソースが別の URI に永続的に移動され、今後のリクエストではその URI を使用する必要があることを意味します。

また、307リダイレクト コードも明確に示されています。これは、リダイレクトが一時的なものであり、今後のリクエストでは元の URI が引き続き使用されることを意味します。

302しかし、との違いが何なのか303、また、 と がなぜ本当に異なるのかは分かりません。 は、もともと のつもりだった301ようです。302一時的リダイレクト( など307)ですが、実際にはほとんどのブラウザは のように扱います。しかしと303の違いは何でしょうか?は、リダイレクトが303301301もっと永続?

ベストアンサー1

  • 301: 永続的なリダイレクト。このリソースに対する以降のリクエストを行うクライアントは新しいURIを使用する必要があります。クライアントはないPOST/PUT/DELETE リクエストに対して自動的にリダイレクトに従います。
  • 302: 未定義の理由によりリダイレクトされました。このリソースに対する以降のリクエストを行うクライアントはない新しいURIを使用してください。クライアントはないPOST/PUT/DELETE リクエストに対して自動的にリダイレクトに従います。
  • 303: 未定義の理由によりリダイレクト。通常は「操作は完了しました。他の場所で続行してください。」このリソースに対する後続のリクエストを行うクライアントは、ない新しいURIを使用してください。クライアントすべきPOST/PUT/DELETEリクエストのリダイレクトに従いますが、フォローアップリクエストにはGETを使用する
  • 307: 一時的なリダイレクト。リソースは後でこの場所に戻る可能性があります。このリソースに対する後続のリクエストを行うクライアントは、古いURIを使用する必要があります。クライアントはないPOST/PUT/DELETE リクエストに対して自動的にリダイレクトに従います。

個人的には、選択できる場合は 302 を避けることをお勧めします。多くのクライアントは、302 に遭遇したときに仕様に従いません。一時的なリダイレクトの場合は、GET 以外のリクエストで必要な動作の種類に応じて、303 または 307 のいずれかを使用する必要があります。POST/PUT/DELETE で代替動作が必要でない限り、303 よりも 307 を優先してください。

おすすめ記事