101 Switching Protocols 【HTTP 101】

概要

101 Switching Protocols(HTTP 101)とは、WebサーバからWebブラウザなどのクライアントへ送られるHTTPステータスコードの一つで、クライアントの要求に応じて別のプロトコルによる通信に切り替えることを通知するもの。HTTP 1.1以降で利用できる。

WebサーバとWebブラウザなどのクライアントの間ではHTTPHypertext Transfer Protocol)という通信規約(プロトコル)でデータ伝送を行っている。クライアントからの要求(リクエスト)に対してサーバは応答(レスポンス)を返すが、その際に現在の状態を示すHTTPステータスコードを通知する。

ステータスコードの100番台は「情報」(Informational)関連の用途に割り当てられており、101番は「Switching Protocol」、すなわち、現在のHTTPから別のプロトコルや上位バージョンのHTTPへ切り替えることを意味する。

この応答は、クライアントがUpgradeヘッダで別のプロトコルへの切り替えを打診してきたときに、これに応じることを通知するために用いられる。切り替えに応じられない場合は、「200 OK」など101番以外の応答を返すことで通知する。

Upgradeヘッダおよび101応答は、HTTPからWebSocketへの切り替えや、HTTP 1.1からHTTP/2への切り替えなどに用いられる。クライアントはWebSocketに切り替えたい場合は「Upgrade: websokcet」という行を、HTTP/2に切り替えたい場合は「Upgrade: h2c」という行をリクエストに含める。プロトコルごとに他に必要な制御情報も記載する必要がある。この仕組みはHTTP/3では廃止され、利用できない。

(2024.8.23更新)

HTTPステータスコード一覧

*1 302はHTTP/1.0では「Moved Temporarily」だった。
*2 413はHTTP/1.1では「Request Entity Too Long」、RFC 7231では「Payload Too Long」だった。
*3 414はHTTP/1.1では「Request-URI Too Long」だった。
*4 416はHTTP/1.1では「Requested Range Not Satisfiable」だった。
*5 418は1998年エイプリルフールのジョークRFC 2324で「I'm a teapot」として定義されていた。