[102] HTTP の状態符号 101
は、
プロトコルを HTTP/1.1 以外に切り替えることを表します。
[103] この応答までは HTTP/1.1 ですが、その後は新しいプロトコルに切り替わります。
[107] HTTP の鯖もクライアントも、 HTTP
以外のプロトコルの実装は特に義務付けられていません。しかし、
HTTP/1.1 のクライアントは、 101
を含む 1xx
の応答の構文解析には対応しなければなりません。
[106] この状態符号は Upgrade:
ヘッダーと共に使われます。
用法と処理モデルについては、 Upgrade:
の項も参照してください。
[112] 101
状態符号は、 クライアントが
Upgrade:
ヘッダーで示した本接続で利用するアプリケーションプロトコルの変更の要求を鯖が理解し、
従う意思があることを示しています。 >>111
[109] HTTP/1.1 のクライアントは、 101
を含む 1xx
の構文解析に対応しなければなりません。
[110] HTTP/1.1 の串は、自身が 1xx
応答を特に要求した場合を除き、 101
を含む 1xx
応答を転送しなければなりません。
[1] HTTP/1.0 応答が 101
応答だった時にクライアントがどう処理するべきかは不明です。
[2] クライアントが理解できない 101
応答を受信した時にどうしなければならないのかは不明です。
[3] サーバーは 101
の後直ちにプロトコルを切り替えることになっています。
クライアントは切り替えが可能かどうか表明する方法がありません (本来クライアントの指示にサーバーが応えて切り替えるはずのものですから)。
従ってクライアントが処理できないデータを受け取ることになりますから、
持続接続の利用の有無に関わらず、クライアントは直ちにHTTP接続を閉じ、
受信データがあったとしても捨てるべきと思われます。
[4] クライアントがその場合に fetch のような API でどう処理するべきかも明確ではありません。
101
応答を結果として返すかもしれませんし、
最後の応答ではないのですから、ネットワークエラーとするべきかもしれません。
[7] Chrome と IE は、 101
も (少なくても XHR では)
他の 1xx
と同じく無視し、その後に最後の要求があればそれを結果として採用するようです。
(XHR では要求に Upgrade:
は指定できないため、
応答に Upgrade:
が含まれていても、プロトコルの切り替えを表すのではなく、
切り替え可能なプロトコルを示していると解釈するべきと思われます。)
[8] Firefox は、 (XHR では) 101
応答を結果として採用するようです。
[9] HTTP/2 RFC は 101
応答をどう処理するべきか規定していません。
[10] Firefox は HTTP/2 101
を受信したら、
ストリームエラー PROTOCOL_ERROR
とします。
Upgrade:
の項も参照してください。