From 47b6bcd650196f2a5a4083169ef2589eea823028 Mon Sep 17 00:00:00 2001 From: Masahiro Fujimoto Date: Wed, 5 Jan 2022 19:04:54 +0900 Subject: 2021/08/14 時点の英語版に基づき新規翻訳 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/http/headers/upgrade/index.md | 115 +++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 files/ja/web/http/headers/upgrade/index.md diff --git a/files/ja/web/http/headers/upgrade/index.md b/files/ja/web/http/headers/upgrade/index.md new file mode 100644 index 0000000000..cb5051b39d --- /dev/null +++ b/files/ja/web/http/headers/upgrade/index.md @@ -0,0 +1,115 @@ +--- +title: Upgrade +slug: Web/HTTP/Headers/Upgrade +tags: + - HTTP + - HTTP ヘッダー + - リクエストヘッダー + - レスポンスヘッダー + - Upgrade +browser-compat: http.headers.Upgrade +translation_of: Web/HTTP/Headers/Upgrade +--- +{{HTTPSidebar}} + +HTTP 1.1 (専用) の `Upgrade` ヘッダーは、すでに確立されたクライアントとサーバー間のプロトコルを、異なるプロトコルに(同じ転送プロトコルを通じて)アップグレードするために使用することができます。例えば、クライアントが HTTP 1.1 から HTTP 2.0 へ、または HTTP や HTTPS のコネクションを WebSocket へアップグレードすることができます。 + +> **Warning:** HTTP/2 は明確にこの仕組み/ヘッダーを使用することを禁止しています。これは HTTP/1.1 専用です。 + + + + + + + + + + + + +
ヘッダー種別 + {{Glossary("Request header", "リクエストヘッダー")}}, + {{Glossary("Response header", "レスポンスヘッダー")}} +
{{Glossary("Forbidden header name", "禁止ヘッダー名")}}はい
+ +## 概要 + +`Upgrade` ヘッダーフィールドは、クライアントがサーバーに対して、優先度の降順に列挙したプロトコルのうちの 1 つ(以上)に切り替えるよう促すために使用することができます。 + +例えば、クライアントが下記のような `GET` リクエストを送信する際に、切り替えるべき推奨プロトコル(この場合は "example/1" および "foo/2")を列挙することができます。 + +``` +GET /index.html HTTP/1.1 +Host: www.example.com +Connection: upgrade +Upgrade: example/1, foo/2 +``` + +> **Note:** `Connection: upgrade` は `Upgrade` を送る際に設定する必要があります。 + +サーバーはどのような理由であろうと、無視することができます。その場合、サーバーは `Upgrade` ヘッダーが送信されていないかのように応答する必要があります(たとえば {{HTTPStatus(200, "200 OK")}})。 + +サーバーが接続をアップグレードすることを決めた場合、次のようにする必要があります。 + +1. {{HTTPStatus(101, "101 Switching Protocols")}} レスポンスステータスを返し、そこに切り替え先のプロトコルを示した `Upgrade` ヘッダーを入れる必要があります。例えば次のようにします。 + +``` +HTTP/1.1 101 Switching Protocols +Upgrade: foo/2 +Connection: Upgrade +``` + +2. 元のリクエストに*新しいプロトコルを使用して*レスポンスを送ります(サーバーは、元のリクエストを完了できるプロトコルにのみ切り替えることができます)。 + +サーバーは、 {{HTTPStatus("426")}} `Upgrade Required` レスポンスの一部としてこのヘッダーを送信することもあります。これはサーバーが現在のプロトコルではリクエストを実行しないが、プロトコルが変更されれば実行するかもしれないことを示すものです。クライアントは上記の手順でプロトコルの変更を要求することができます。 + +より詳細な情報と例は、[プロトコルのアップグレードメカニズム](/ja/docs/Web/HTTP/Protocol_upgrade_mechanism)に記載されています。 + +## 構文 + +``` +Connection: upgrade +Upgrade: protocol_name[/protocol_version] +``` + +メモ: + +- {{HTTPHeader("Connection")}} ヘッダーで種別を `upgrade` に指定することが、 `Upgrade` ヘッダーを送信する上で*常に*必要です(前述の通り)。 +- プロトコルはカンマ区切りで、優先度順に列挙してください。プロトコルのバージョンは省略可能です。例を挙げます。 + +``` +Connection: upgrade +Upgrade: a_protocol/1, example ,another_protocol/2.2 +``` + +## ディレクティブ + +- カンマ区切りのプロトコル名のリスト(それぞれに省略可能でプロトコルバージョン) + - : プロトコル名に省略可能で("/" で区切って)バージョンをつけたものを 1 つ以上。プロトコルは優先度の降順で列挙します。 + +## 例 + +``` +Connection: upgrade +Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 +``` + +``` +Connection: Upgrade +Upgrade: websocket +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [プロトコルのアップグレードメカニズム](/ja/docs/Web/HTTP/Protocol_upgrade_mechanism) +- {{HTTPStatus("101")}} `Switching Protocol` +- {{HTTPStatus("426")}} `Upgrade Required` +- {{HTTPHeader("Connection")}} -- cgit v1.2.3-54-g00ecf