* 仕様書 [REFS[ - [309] [[RFC 2616]] - [307] [CITE@en[RFC 2817 - Upgrading to TLS Within HTTP/1.1]] ([TIME[2012-01-09 20:05:09 +09:00]] 版) ]REFS] * 登録簿 [310] [[IANA登録簿]]は [[RFC 2817]] [SRC[>>307]] により設けられました。 * 歴史 [FIG[ [FIGCAPTION[ [308] RFC 2068 (HTTP/1.1) 14.41; RFC 2616 (HTTP/1.1) 14.42 Upgrade ]FIGCAPTION] > The Upgrade general-header allows the client to specify what additional communication protocols it supports and would like to use if the server finds it appropriate to switch protocols. The server MUST use the Upgrade header field within a 101 (Switching Protocols) response to indicate which protocol(s) are being switched. [CODE(HTTP)[Upgrade]] [[一般頭欄]]は、 [[クライアント]]が、どの追加の通信プロトコルに対応しており、 [[鯖]]がプロトコル切替えが適切であると判断した場合には使用したいと考えているのかを指定することができます。 鯖は、 [CODE(HTTP)[[[101]]]] (プロトコル切替) 応答中でどのプロトコルに切り替えるのかを示すために [CODE(HTTP)[Upgrade]] 頭欄を使わなければ'''なりません'''。 > - Upgrade = "Upgrade" ":" 1#product > For example, - Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 > The Upgrade header field is intended to provide a simple mechanism for transition from HTTP/1.1 to some other, incompatible protocol. It does so by allowing the client to advertise its desire to use another protocol, such as a later version of HTTP with a higher major version number, even though the current request has been made using HTTP/1.1. This eases the difficult transition between incompatible protocols by allowing the client to initiate a request in the more commonly supported protocol while indicating to the server that it would like to use a "better" protocol if available (where "better" is determined by the server, possibly according to the nature of the method and/or resource being requested). [CODE(HTTP)[Upgrade]] 頭欄は、 HTTP/1.1 から何か他の、非互換なプロトコルに移行するための単純な機構を提供することを想定しています。クライアントは、 現在の要求は HTTP/1.1 を使って行いながらも、例えばより大きな大版番号を持つより新しい版の HTTP のような、別のプロトコルを使いたいと思っているということを宣伝できます。 これによって、非互換プロトコル間の難しい移行が、 クライアントはより広く対応されているプロトコルで要求を初期化しつつ鯖に「よりよい」 プロトコルを利用可能なら使いたいことを示すことができるので、 容易になります。 (ここで「よりよい」とは、鯖によって、おそらく要求された[[方式]][[及び/又は]][[資源]]の性質に従って決定されます。) > The Upgrade header field only applies to switching application-layer protocols upon the existing transport-layer connection. Upgrade cannot be used to insist on a protocol change; its acceptance and use by the server is optional. The capabilities and nature of the application-layer communication after the protocol change is entirely dependent upon the new protocol chosen, although the first action after changing the protocol MUST be a response to the initial HTTP request containing the Upgrade header field. [CODE(HTTP)[Upgrade]] 頭欄は、既存の[[転送層]][[接続]]上の[[応用層]]プロトコルの切替にのみ適用します。 [CODE(HTTP)[Upgrade]] をプロトコル変更を主張するのに使うことはできません。 鯖がそれを受け入れて使用するかどうかは任意選択です。 プロトコル変更後の応用層通信の能力と性質は選ばれた新しいプロトコルに完全に依存します。 但し、プロトコル変更後の最初の動作は [CODE(HTTP)[Upgrade]] 頭欄を含んだ初期 HTTP 要求への応答でなければ'''なりません'''。 > The Upgrade header field only applies to the immediate connection. Therefore, the upgrade keyword MUST be supplied within a Connection header field (section 14.10) whenever Upgrade is present in an HTTP/1.1 message. [CODE(HTTP)[Upgrade]] 頭欄は、直接接続にのみ適用します。 従って、 [CODE(HTTP)[Upgrade]] が HTTP/1.1 メッセージ中に存在するときには、 必ず [CODE(HTTP)[upgrade]] 見出し語を [CODE(HTTP)[[[Connection]]]] 頭欄中に供給しなければ'''なりません'''。 > The Upgrade header field cannot be used to indicate a switch to a protocol on a different connection. For that purpose, it is more appropriate to use a 301, 302, 303, or 305 redirection response. [CODE(HTTP)[Upgrade]] 頭欄は、異なる接続上のプロトコルへの切替えを示すために使うことはできません。 その目的には、 [CODE(HTTP)[[[301]]]], [CODE(HTTP)[[[302]]]], [CODE(HTTP)[[[303]]]] または [CODE(HTTP)[[[305]]]] の再指向応答を使うのがより適切です。 > This specification only defines the protocol name "HTTP" for use by the family of Hypertext Transfer Protocols, as defined by the HTTP version rules of section 3.1 and future updates to this specification. Any token can be used as a protocol name; however, it will only be useful if both the client and server associate the name with the same protocol. この仕様書は、プロトコル名 [CODE(HTTP)[HTTP]] だけを、 ハイパー文転送プロトコルで使用するために、 3.1節の版規則とこの仕様書の将来の更新で定義される通り定義します。 任意の字句をプロトコル名として使うことができます。 しかし、それはクライアントと鯖がある名前を同じプロトコルと関連付けている場合に限って有用です。 * License [[RFCのライセンス]] ]FIG] * プロトコル名 [1] ,製品字句 ,プロトコル ,状態 ,出典 ,[CODE(HTTP)@en[[[GridHTTP]]/1.0]] ,[[GridHTTP]] ,[[IANA]] 未登録 ,[CODE(HTTP)[[[HTTP]]/[VAR[*]]]] ,HTTP ,[HTTP/1.1] ,[CODE(HTTP)@en[[[HTTP/1.0]]]] ,[CODE(HTTP)@en[[[HTTP/1.1]]]] ,[CODE(HTTP)[[[IRC]]/6.9]] ,IRC ,[HTTP/1.1] 例示 ,[CODE(HTTP)[[[RTA]]/x11]] , ,[HTTP/1.1] 例示 ,[CODE(HTTP)[[[SHTTP]]/1.3]] , ,[HTTP/1.1] 例示 ,[CODE(HTTP)[[[TLS/1.0]]]] ,[[TLS]]/1.0 ,[RFC 2817] [2] IANA 登録簿: (last updated 2001-05-01) [3] 2003年12月の時点で、登録簿には一つも登録されていません。 HTTP 仕様書で定義されている [CODE(HTTP)[HTTP/[VAR[*]]]] や 登録手続きを規定している RFC 2817 が定義している [CODE(HTTP)[TLS/1.0]] すら載っていないのはなんとも間抜けな話です [WEAK[(が、 IANAREG では良くある話です)]]。 * メモ [306] [CITE@en[Reverse HTTP - Second Life Wiki]] ([TIME[2009-08-05 22:34:37 +09:00]] 版)