「Upgrade」ヘッダの概要

HTTPの「Upgrade」ヘッダは、クライアントがサーバに対して現在の接続を別のプロトコルにアップグレードする意思を示すために使用される。
例えば、クライアントがHTTP/1.1の接続をHTTP/2やWebSocketにアップグレードしたい場合、リクエストヘッダにフィールドを追加してサーバにその意思を伝える。 そして、サーバーがアップグレードに対応している場合、適切なレスポンスヘッダを返すことでアップグレードが実行される。

「Upgrade」ヘッダの使用例

「Upgrade」ヘッダを使用してHTTP/1.1の接続をHTTP/2にアップグレードする例を示す。

リクエスト

このリクエストでは、ConnectionヘッダにUpgradeとHTTP2-Settingsが指定されており、Upgradeヘッダにはh2c(HTTP/2 over cleartext TCP)が指定されている。 また、HTTP2-Settingsヘッダには、HTTP/2の設定情報がエンコードされた形で含まれている。
 

レスポンス

サーバがアップグレードに対応している場合、以下のようなレスポンスヘッダをクライアントに返す。 ステータスコード「101 Switching Protocols」が使用されており、ConnectionヘッダとUpgradeヘッダには、クライアントのリクエストと同じ値が設定される。これにより、クライアントとサーバーの間の接続がHTTP/2にアップグレードされる。