web-dev-qa-db-ja.com

HTTP / 1.1 302とはどういう意味ですか?

かつて読んだ記事のなかには、(あるURIから別のURIへの)ジャンプを意味するものがありましたが、実際にはジャンプがまったくなかった場合でも、この「302」を検出しました。

102
omg

302リダイレクトはページが一時的に移動されたことを意味し、301はページが永久に移動されたことを意味します。

301はSEO値に適していますが、301はクライアントが元のURLの値を忘れるように指示するため、302はそうではありませんが、302は元の値を保持しているため、論理的に異なる2つのURLそれぞれが同じコンテンツを生成します(検索エンジンは、2つの名前を持つ単一のリソースではなく、別個の重複としてそれらを表示します)。

68
CodeMonkey1313

RFC 2616がまだぶらぶらしている間に、この質問はずっと前に尋ねられました。この質問に対するいくつかの回答は、そのような文書に基づいていますが、現在では関係ありません。引用 マークノッティンガム 執筆時点でIETF HTTPおよびQUICワーキンググループの共同議長:

RFC2616を使用しないでください。ハードドライブ、ブックマークから削除し、印刷されたコピーを焼きます(または責任を持ってリサイクルします)。

古いRFC 2616は、一緒にHTTP/1.1プロトコルを定義する次のドキュメントに取って代わりました。

  • RFC 72 :メッセージの構文とルーティング
  • RFC 7231 :セマンティクスとコンテンツ
  • RFC 7232 :条件付きリクエスト
  • RFC 72 :範囲リクエスト
  • RFC 7234 :キャッシング
  • RFC 7235 :認証

そこで、HTTP/1.1ステータスコードの現在のリファレンスである RFC 7231 に基づいて回答を提供することを目指しています。

302ステータスコード

302 を使用した応答は、URLリダイレクトを実行する一般的な方法です。 302 ステータスコードとともに、応答には別のURIを持つ Location ヘッダーを含める必要があります。このようなヘッダーはユーザーエージェントによって読み取られ、リダイレクトを実行します。


Redirection example


Webブラウザーは、後続のリクエストで POST から GET に変更される場合があります。この動作が望ましくない場合は、代わりに 307 (一時リダイレクト)ステータスコードを使用できます。

これは、 302 ステータスコードが RFC 7231 で定義される方法です。

6.4.3。302 Found

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

サーバーは、異なるURIのURI参照を含む応答にLocationヘッダーフィールドを生成する必要があります。ユーザーエージェントは、Locationフィールドの値を自動リダイレクトに使用する場合があります。サーバーの応答ペイロードには、通常、さまざまなURIへのハイパーリンクを持つ短いハイパーテキストノートが含まれています。

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

MozillaのMDN Webドキュメント によると、 302 の典型的な使用例は次のとおりです。

Webページは、予期しない理由により一時的に利用できません。そのようにして、検索エンジンはリンクを更新しません。

リダイレクト用の他のステータスコード

RFC 7231 は、リダイレクトの次のステータスコードを定義します。

  • 301 (永続的に移動)
  • 302 (見つかった)
  • 307 (一時的なリダイレクト)

RFC 7238 は、リダイレクト用の別のステータスコードを定義するために作成されました。

  • 308 (永続的なリダイレクト)

詳細については、こちらをご覧ください answer .

41
cassiomolin

HTTP 301と302リダイレクトの簡単な見方は次のとおりです。

http://sample.com/sample 」へのブックマークがあるとします。ブラウザを使用してそこに行きます。

この時点で別のURLに302リダイレクトすると、ブックマークを「 http://sample.com/sample 」のままにしておく必要があります。これは、リンク先URLが将来変更される可能性があるためです。

別のURLへの301リダイレクトは、永続的なリダイレクトであるため、新しいURLを指すようにブックマークを変更する必要があることを意味します。

24
Redbeard

From RFC 2616(ハイパーテキスト転送プロトコル仕様)

 10.3.3 302 Found 
 
要求されたリソースは一時的に別のURIに存在します。
リダイレクトが変更される場合があるため、クライアントは
将来のリクエストにRequest-URIを使用し続けます。この応答
は、Cache-ControlまたはExpiresヘッダー
フィールドで示されている場合にのみキャッシュ可能です。
 
一時フィールドのURIは、
応答。リクエストメソッドがHEADでない限り、
レスポンスのエンティティには、新しいURIへのハイパーリンクを持つ短いハイパーテキストノートが含まれるべきである[SHOULD]。

ソース:

http://www.ietf.org/rfc/rfc2616.txt

10
Reginaldo

httpステータスコード定義 に従って、302は(一時的な)リダイレクトを示します。 「要求されたリソースは一時的に別のURIにあります」

5

302は、リソースの場所の変更を示す応答です-「見つかりました」。

リソースを現在配置するURLは、レスポンスの「Location」ヘッダーにある必要があります。

「ジャンプ」は、要求元のクライアントが実行する必要があります(応答のLocationヘッダーフィールドでリソースURLに新しい要求を作成します)。

5
Demi

SEOの用語では、301と302の両方が良いです。

1つのバージョンしか返せない場合(つまり、他のバージョンがリダイレクトされる場合)、それは素晴らしいことです!この動作は、重複するコンテンツを減らすため有益です。末尾のスラッシュURLへのリダイレクトの特定の場合、検索結果には、リダイレクトが301か302かに関係なく、200の応答コード(ほとんどの場合、末尾のスラッシュURL)を含むURLのバージョンが表示される可能性があります。

5
Sunil

From Wikipedia

HTTP応答ステータスコード302 Foundは、リダイレクトを実行する最も一般的な方法です。これは、標準と矛盾する産業慣行の例です。

4
Paul Sonier

HTTPコード302はリダイレクト用です http://en.wikipedia.org/wiki/HTTP_302 を参照してください。

閲覧者にページを読んで別の場所に移動し、別のページをロードするよう指示します。その使用法は非常に一般的です。

2
BeWarned

RFC 1945/Hypertext Transfer Protocol-HTTP/1. :によると

   302 Moved Temporarily

   The requested resource resides temporarily under a different URL.
   Since the redirection may be altered on occasion, the client should
   continue to use the Request-URI for future requests.

   The URL must be given by the Location field in the response. Unless
   it was a HEAD request, the Entity-Body of the response should
   contain a short note with a hyperlink to the new URI(s).

   If the 302 status code is received in response to a request using
   the POST method, the user agent must not automatically redirect the
   request unless it can be confirmed by the user, since this might
   change the conditions under which the request was issued.

       Note: When automatically redirecting a POST request after
       receiving a 302 status code, some existing user agents will
       erroneously change it into a GET request.