このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

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 トラフィックを転送してスパムメールを中継するなどの悪用があります。

リクエストの本体 なし
成功時のレスポンスの本体 なし
安全性 なし
べき等性 なし
キャッシュ 不可
HTML フォームでの使用 不可

構文

http
CONNECT <host>:<port> HTTP/1.1
<host>

ホストは、登録済みホスト名(例: example.com)または IP アドレス(IPv4、IPv6)であることがあります。

<port>

10 進数のポート番号(例:80443)。デフォルトのポートは存在しないため、クライアントは必ずポート番号を送信しなければなりません

プロキシー認証

認証が必要なプロキシーサーバーへトンネルを作成するリクエストは、以下のようになります。 詳しくは Proxy-Authorization ヘッダーを参照してください。

http
CONNECT server.example.com:80 HTTP/1.1
Host: server.example.com:80
Proxy-Authorization: basic aGVsbG86d29ybGQ=

仕様書

Specification
HTTP Semantics
# CONNECT

ブラウザーの互換性

関連情報