CONNECT リクエストメソッド
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
CONNECT は HTTP のメソッドで、プロキシーに対して、宛先サーバーへの HTTP トンネルの確立をリクエストします。成功した場合、トンネルが閉じられるまで双方向のデータを透過的に転送します。
リクエストターゲットは、トンネル出力先のホストとポート番号のみをコロンで区切って構成されるもので、このメソッドに固有のものです(詳細は構文を参照)。 2XX の成功レスポンスステータスコードは、プロキシーが「トンネルモード」に切り替わり、成功レスポンス本体内のデータがリクエスト対象のサーバーからのものであるという意味です。。
ウェブサイトがプロキシーの背後にある場合、かつ外部トラフィックはすべてプロキシーを経由しなければならないというネットワークルールが強制されている場合、CONNECT メソッドを使用すると、そのウェブサイトとの間で TLS (HTTPS) 接続を確立することができます。
- クライアントはプロキシーに対し、目的の出力先への TCP 接続をトンネル処理するよう依頼する。
- プロキシーサーバーはクライアントに代わってサーバーへ保護された接続を確立します。
- 接続が確立されると、プロキシーサーバーはクライアントとの間で TCP ストリームを中継し続けます。
HTTP トンネルは、プロキシー経由でウェブサイトへの安全なアクセスをすることができるだけでなく、通常は制限されるトラフィック(SSH や FTP など)を HTTP(S) プロトコル経由で利用できる方法を提供します。
CONNECT はホップバイホップ (hop-by-hop) メソッドであり、ほとんどのオリジンサーバーが CONNECT を実装していないため、オリジンサーバーの前に別のインバウンドプロキシーがある場合にのみ、プロキシーは CONNECT リクエストを転送します。
警告:
CONNECT に対応するプロキシーを実行している場合は、その使用を既知のポートのセットまたは構成不可の安全なリクエスト対象のリストに制限してください。
任意のサーバーへのトンネル接続には重大なリスクが伴います。特に、ウェブトラフィック用に設計されていない既知または予約済みの TCP ポートを出力先とする場合、そのリスクは顕著です。
プロキシーの設定が甘いと、例えば SMTP トラフィックを転送してスパムメールを中継するなどの悪用があります。
構文
CONNECT <host>:<port> HTTP/1.1
例
>プロキシー認証
認証が必要なプロキシーサーバーへトンネルを作成するリクエストは、以下のようになります。
詳しくは Proxy-Authorization ヘッダーを参照してください。
CONNECT server.example.com:80 HTTP/1.1
Host: server.example.com:80
Proxy-Authorization: basic aGVsbG86d29ybGQ=
仕様書
| Specification |
|---|
| HTTP Semantics> # CONNECT> |
ブラウザーの互換性
関連情報
- HTTP リクエストメソッド
- HTTP レスポンスステータスコード
- HTTP ヘッダー
- プロキシーサーバーの用語解説
Proxy-Authorization- How To Use SSH Over An HTTP Proxy dimoulis.net (2023)