web-dev-qa-db-ja.com

HTTP 302はどのように機能しますか?

HTTP 302はどのように機能しますか?内部を知りたい

44
GilliVilla

ブラウザはどのように処理するのですか?サーバーはLocationヘッダーとともに_302_コードを送信し、ブラウザーは代わりにLocationヘッダーで指定された新しいURIを要求します。

301 (Moved Permanently)とは異なり、_302_コードがなくなると、ブラウザーは引き続き元のURIを使用してリクエストを実行します

45
Michael Mrozek

サーバーは、一時的なリダイレクトを示すコード302を含むHTTP応答を返し、新しいURIを示すLocation:ヘッダーを含めます。

HTTP/1.1 302 Found
Location: http://some-other-url

そして、サーバーの裁量で潜在的に他のヘッダー。

ブラウザは通常、これをディレクティブとして受け取り、ロケーションヘッダーで指定された他のURIに対して新しい個別のリクエストを自動的に作成します。クライアント(ブラウザ)はforcedではありません(理論的には、単にユーザーにメッセージを表示するか、他に必要なことを行うことができます)が、それがHTTPクライアントの通常の動作です。

302は一時リダイレクトであるため、適切に動作するクライアントは、新しいURLに直接移動するのではなく、今後も古いURLを使用し続けることに注意してください(301は永続的なリダイレクトです)。

20
Tyler McHenry

From: http://www.ietf.org/rfc/rfc2616.txt および http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html =

10.3.3302が見つかりました

要求されたリソースは一時的に別のURIの下にあります。リダイレクトは時々変更される可能性があるため、クライアントは今後のリクエストにRequest-URIを使用し続ける必要があります。この応答は、Cache-ControlまたはExpiresヘッダーフィールドで示されている場合にのみキャッシュ可能です。

一時URIは、応答の[場所]フィールドで指定する必要があります。要求メソッドがHEADでない限り、応答のエンティティには、新しいURIへのハイパーリンクを持つ短いハイパーテキストノートが含まれている必要があります。

GETまたはHEAD以外のリクエストに応答して302ステータスコードを受信した場合、ユーザーエージェントは、ユーザーが確認できない限りリクエストを自動的にリダイレクトしてはなりません。リクエストが発行された条件を変更する可能性があるためです。

  Note: RFC 1945 and RFC 2068 specify that the client is not allowed
  to change the method on the redirected request.  However, most
  existing user agent implementations treat 302 as if it were a 303
  response, performing a GET on the Location field-value regardless
  of the original request method. The status codes 303 and 307 have
  been added for servers that wish to make unambiguously clear which
  kind of reaction is expected of the client.
9
xgMz

何の内部? 302は、サーバーがクライアントに提供する戻りコードです。クライアントが行うことはそれまでです。 RFCは、クライアントが何を行うべきかについてのガイダンスを提供しますshouldですが、現実の世界では、301、302、303、および307はすべて、主流のブラウザーによって同じ方法で処理されます。

2
James Antill

アドオン-重要なことは、停止クライアントが同じサーバーURLを同じリクエストで連続的/頻繁にヒットすることです。

1
A.T.