web-dev-qa-db-ja.com

HTTP 301と308のステータスコードの違いは何ですか?

HTTP 301308ステータスコードの違いは何ですか?

  • 301(永続的に移動):このリクエストおよび今後のすべてのリクエストは、指定されたURIに送信する必要があります。

  • 308(永続的なリダイレクト):リクエストと今後のすべてのリクエストは、別のURIを使用して繰り返す必要があります。

それらは似ているようです。

301302、および307の概要

HTTP/1.1プロトコルのセマンティクスとコンテンツの現在のリファレンスである RFC 7231 は、 301 (永続的に移動)および 302 (見つかった)ステータスコード。リクエストメソッドをPOSTからGETに変更できます。この仕様では、リクエストメソッドをPOSTからGETに変更できない 307 (一時リダイレクト)ステータスコードも定義しています。

以下の詳細を参照してください。

6.4.2。 301永久移動

301(永続的に移動)ステータスコードは、ターゲットリソースに新しい永続URIが割り当てられており、このリソースへの今後の参照には、囲まれたURIのいずれかを使用する必要があることを示します。 [...]

注:歴史的な理由により、ユーザーエージェントは、後続のリクエストのリクエストメソッドをPOSTからGETに変更する場合があります。この動作が望ましくない場合は、代わりに307(一時リダイレクト)ステータスコードを使用できます。

6.4.3。 302見つかりました

302(見つかった)ステータスコードは、ターゲットリソースが一時的に別のURIにあることを示します。リダイレクトはときどき変更される可能性があるため、クライアントは今後のリクエストに有効なリクエストURIを引き続き使用する必要があります。 [...]

注:歴史的な理由により、ユーザーエージェントは、後続のリクエストのリクエストメソッドをPOSTからGETに変更する場合があります。この動作が望ましくない場合は、代わりに307(一時リダイレクト)ステータスコードを使用できます。

6.4.7。 307一時的なリダイレクト

307(一時リダイレクト)ステータスコードは、ターゲットリソースが別のURIの下に一時的に存在し、ユーザーエージェントがそのURIへの自動リダイレクトを実行する場合、リクエストメソッドを変更してはならないことを示します。リダイレクトは時間とともに変化する可能性があるため、クライアントは今後のリクエストに対して元の有効なリクエストURIを引き続き使用する必要があります。 [...]

注:このステータスコードは302(見つかった)に似ていますが、要求メソッドをPOSTからGETに変更できない点が異なります。この仕様では、301(永続的に移動)に相当するものは定義していません(ただし、 RFC 7238 。ただし、この目的でステータスコード308(永続リダイレクト)を定義しています)。

308の必要性

RFC 7238 は、 308 (Permanent Redirect)ステータスコードを定義するために作成されました。これは 301 (永続的に移動)ただし、要求メソッドをPOSTからGETに変更することはできません。

308 ステータスコードは、 RFC 7538RFC 7238 を廃止)によって定義されるようになりました。

3。 308パーマネントリダイレクト

308(パーマネントリダイレクト)ステータスコードは、ターゲットリソースに新しいパーマネントURIが割り当てられ、このリソースへの今後の参照では、囲まれたURIのいずれかを使用する必要があることを示します。リンク編集機能を備えたクライアントは、有効なリクエストURIへの参照を、サーバーから送信された1つ以上の新しい参照に可能な限り自動的に再リンクする必要があります。 [...]

注:このステータスコードは301(永続的に移動)に似ていますが、リクエストメソッドをPOSTからGETに変更できない点が異なります。

Seには次のものがあります。

                                                             +-----------+-----------+
                                                             | Permanent | Temporary |
+------------------------------------------------------------+-----------+-----------+
| Allows changing the request method from POST to GET        | 301       | 302       |
+------------------------------------------------------------+-----------+-----------+
| Doesn't allow changing the request method from POST to GET | 308       | 307       |
+------------------------------------------------------------+-----------+-----------+

最適なステータスコードの選択

Michael Kropat は、各状況に最適なステータスコードを決定するのに役立つ 一連の決定チャート をまとめます。 2xxおよび3xxステータスコードについては、以下を参照してください。

Picking a 2xx or 3xx status code

183
cassiomolin