HTTPQUERY
日本語

300 Multiple Choices

使い方

300 Multiple Choices ステータスコードを受け取ったとき、メッセージボディの内容はリクエストメソッドによって異なります。HEAD リクエストにはメッセージボディが含まれません。その他のメソッドでは、ボディにはクライアントが最も適切なレスポンスを選択するための一覧が含まれます。

HEAD 以外のレスポンスでは、ボディに選択可能な候補の一覧が含まれます。各選択肢を識別するために rel=“alternate” を伴う Link ヘッダーも使われます。デフォルトのレスポンスが存在する場合やサーバーに推奨する選択肢がある場合、Location ヘッダーがその推奨を示します。

例

クライアントがリソースを要求し、サーバーは複数の選択肢を提示します。ヘッダーには各リソースへのパスが含まれます。これは GET リクエストに続くものであるため、ボディにはクリック可能な選択肢の一覧が示されます。

リクエスト

GET /tech-news HTTP/1.1
Host: example.com

レスポンス

HTTP/1.1 300 Multiple Choices
Link: </leading/news.html>; rel="alternate"
Link: </bleeding/news.html>; rel="alternate"
Location: </leading/news.html>
Content-Type: text/html
Content-Length: 164

<h2>Choose from one of the following</h2>
<ul>
  <li><a href=/leading/news.html>Leading edge</a>
  <li><a href=/bleeding/news.html>Bleeding edge</a>
</ul>

ブラウザの挙動

ほとんどのブラウザは 300 レスポンスを受け取っても選択用のインターフェイスを提示しません。Location ヘッダーが存在する場合、ブラウザは通常、302 リダイレクトと同様に推奨された選択肢を自動的に辿ります。Location ヘッダーがない場合、ブラウザは選択可能な候補の一覧を含むレスポンスボディをレンダリングします。実際には、コンテントネゴシエーションが形式の選択を透過的に処理するため、300 に遭遇することはまれです。

コードリファレンス

.NET

HttpStatusCode.MultipleChoices

Rust

http::StatusCode::MULTIPLE_CHOICES

Rails

:multiple_choices

Go

http.StatusMultipleChoices

Symfony

Response::HTTP_MULTIPLE_CHOICES

Python3.5+

http.HTTPStatus.MULTIPLE_CHOICES

Java

java.net.HttpURLConnection.HTTP_MULT_CHOICE

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_MULTIPLE_CHOICES

Angular

@angular/common/http/HttpStatusCode.MultipleChoices