このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
300 Multiple Choices
HTTP の300 Multiple Choices はリダイレクトレスポンスステータスコードで、リクエストに対して複数のレスポンスがあることを示します。ユーザーエージェントやユーザーは、その内から一つを選択します。
メモ:エージェント駆動型コンテンツネゴシエーションでは、サーバーに複数の候補が存在する場合、クライアントとサーバーが共同で指定されたリソースの最適な候補を決定します。ほとんどのクライアントは、レスポンスから自動的に選択する手段を持っていません。また、追加の往復通信により、クライアントとサーバーの対話が遅くなります。サーバー駆動型コンテンツネゴシエーションの方がはるかに広く使用されており、サーバーはリクエストヘッダー(Accept-Language、Accept など)に基づいて、クライアントに最も適したリソースを選べます。
サーバーは、ユーザーまたはユーザーエージェントが選択できるリソースメタデータと URI のリストを含むコンテンツをレスポンスに含めるべきです。コンテンツの形式は実装に依存しますが、ユーザーエージェントによって簡単に解析できる形式(HTML や JSON など)であるべきです。
サーバーが推奨する選択肢がある場合は、Location ヘッダーを生成してください。
In this article
ステータス
300 Multiple Choices例
>リソースのリストがついた 300 レスポンス
次の例は、透過的コンテンツネゴシエーションのリクエストとレスポンスのやり取りを示しています。Apache サーバーは、型マップで定義されたリソースの複数の版を、入力する言語に応じて、英語のコンテンツにはindex.html.en、フランス語のコンテンツにはindex.html.fr というように提供します。
URI: index.html.enContent-Language: enURI: index.html.frContent-Language: frNegotiate: trans リクエストヘッダーは、クライアントが TCN を使用してリソースを選べます。このメカニズムに対応するブラウザーが少ないということは、代わりに curl などのユーザーエージェントが使用されているということになります。
curl -v -H "Negotiate: trans" http://localhost/indexこれは、次のリクエストを生成します。
GET /index HTTP/1.1Host: localhostUser-Agent: curl/8.7.1Accept: */*Negotiate: transリクエストされたリソースのさまざまな表現の詳細とともに、300 のレスポンスを受け取ります。
HTTP/1.1 300 Multiple ChoicesDate: Fri, 30 Aug 2024 09:21:48 GMTServer: Apache/2.4.59 (Unix)Alternates: {"index.html.en" 1 {type text/html} {language en} {length 48}}, {"index.html.fr" 1 {type text/html} {language fr} {length 45}}Vary: negotiate,accept-languageTCN: listContent-Length: 419Content-Type: text/html; charset=iso-8859-1<html><head><title>300 Multiple Choices</title></head><body><h1>Multiple Choices</h1>Available variants:<ul><li><a href="index.html.en">index.html.en</a> , type text/html, language en</li><li><a href="index.html.fr">index.html.fr</a> , type text/html, language fr</li></ul></body></html>仕様書
| Specification |
|---|
| HTTP Semantics> # status.300> |