HTTP/1.1 Upgradeヘッダー

Upgradeヘッダーは、HTTP/1.1で導入されたの1つである。通信の交換時に、クライアントはクリアテキストの要求を行うことから始まり、後で新しいHTTPプロトコルバージョンにアップグレードされるか、別のプロトコルに切り替えられる。コネクションのアップグレードはクライアントからリクエストされなければならない。サーバーがアップグレードを強制したい場合には、codice_1というレスポンスを送ることができる。その場合、クライアントはコネクションを開いたまま、適切なupgradeヘッダーを付加した新しいリクエストを送信することができる。
TLSでの利用.
1つの用途としては、リクエストを通常のHTTPポートで開始し、Transport Layer Security（TLS）に切り替える場合が挙げられる。実用的にはそのような使い方は稀であり、暗号化HTTPの通信の開始時にHTTPSを利用するほうが非常に一般的である。
サーバーはcodice_2ステータスコードを返すことで、レガシークライアントに失敗がクライアントに関係することを警告できる（codice_3 レベルコードは、クライアントの失敗であることを意味する）。
セキュアな接続を確立するためのこの方法は、次のような理由で有利である。
同一のリソースが暗号化されたセキュアな方法と暗号化されていない方法の両方でサーバーから取得できる場合、サーバーとの暗号化されたコネクションを保持しながらも、中間者がクライアントとの接続が暗号化と認証が行われていない状態を保持できてしまう可能性がある。
この手法の欠点には次のような点が挙げられる。
WebSocketでの利用.
WebSocketもこの仕組を使用してHTTPサーバーと互換性のある方法で接続を確立する。WebSocket Protocolは2つのパートに分かれる。ハンドシェイクはupgradeされた接続を確立し、その後、実際のデータを転送する。最初に、クライアントはWebSocket接続をcodice_4とcodice_5ヘッダーを使用してリクエストする。サーバーは、プロトコルをサポートしていれば、同一のcodice_4とcodice_5ヘッダーで応答し、ハンドシェイクを完了する。一度ハンドシェイクが成功裏に完了したら、データの転送が始まる。
HTTP/2での利用.
かつて、HTTP Upgradeを利用して平文のHTTP/1.1接続からHTTP/2を確立する方法が規定されていた。クライアントはHTTP/1.1接続を開始し、codice_8ヘッダーを送信する。もしサーバーがHTTP/2をサポートしていれば、HTTP 101 Switching Protocolステータスコードを付加して応答する。この仕組みはcleartext HTTP2（h2c）でのみ使用される。
この方法は後のRFC 9113で廃止となった。