HTTP/1.1 Upgradeヘッダー
1つの用途としては、リクエストを通常のHTTPポートで開始し、Transport Layer Security(TLS)に切り替える場合が挙げられる。実用的にはそのような使い方は稀であり、暗号化HTTPの通信の開始時にHTTPSを利用するほうが非常に一般的である。
サーバーは426ステータスコードを返すことで、レガシークライアントに失敗がクライアントに関係することを警告できる(400 レベルコードは、クライアントの失敗であることを意味する)。
セキュアな接続を確立するためのこの方法は、次のような理由で有利である。
複雑で問題が多いサーバーサイドのURLリダイレクトを必要としない
セキュアなウェブサイトのヴァーチャルホスティングが可能になる(ただし、HTTPSではServer Name Indicationを使用することも可能である)
特定のリソースにアクセスする手段を1つにすることで、ユーザーの混乱を防ぐことができる
同一のリソースが暗号化されたセキュアな方法と暗号化されていない方法の両方でサーバーから取得できる場合、サーバーとの暗号化されたコネクションを保持しながらも、中間者がクライアントとの接続が暗号化と認証が行われていない状態を保持できてしまう可能性がある。
この手法の欠点には次のような点が挙げられる。
クライアントがURI内にセキュアなHTTPの要件を指定できない(ただし、クライアントはupgradeのネゴシエーションで要求することはできる)
HTTPはホップベースで定義されているため、HTTPトンネル(英語版)はバイパス用のプロキシサーバーを必要とする可能性がある。