1. ホーム
  2. proxy

HTTPプロキシサーバーでCONNECTとGETのHTTPメソッドはいつ使うべきですか?

2023-08-14 16:56:58

質問

私はWebClientライブラリを作っています。今、プロキシ機能を実装しているので、いくつか調べているのですが、いくつかのコードで CONNECT メソッドを使用して URL を要求するコードを見ました。

しかし、ウェブブラウザ内でそれをチェックすると、それは CONNECT メソッドを使用せず、代わりにGETメソッドを呼び出しています。

だから私は混乱している。いつ両方のメソッドを使うべきでしょうか?

どのように解決するのですか?

CONNECT リクエストは、プロキシにリモートエンドポイントへの HTTP トンネルを確立するように要求します。 通常 は SSL 接続に使われますが、HTTP にも使えます (プロキシチェーンやトンネリングの目的で使われます)。

CONNECT www.google.com:443 

上記の行は、プロキシからポート 443 で www.google.com への接続を開きます。 この後、クライアントから送信されたコンテンツは、プロキシによって www.google.com:443 .

ユーザがあるページを取得しようとした場合 http://www.google.com を取得しようとした場合、プロキシは彼に代わって全く同じリクエストを送り、レスポンスを取得することができます。

SSL(HTTPS) では、2つのリモートエンドポイントだけがリクエストを理解し、プロキシはそれを解読することができません。したがって、プロキシが行うことは CONNECT を使ってトンネルを開き、2 つのエンドポイント (Web サーバとクライアント) が互いに直接会話できるようにすることだけです。

プロキシ・チェイニング。

2つのプロキシサーバをチェーンしている場合、これは発行されるリクエストの順序です。

GET1 is the original GET request (HTTP URL)
CONNECT1 is the original CONNECT request (SSL/HTTPS URL or Another Proxy)

User Request ==CONNECT1==> (Your_Primary_Proxy ==CONNECT==> AnotherProxy-1 ... ==CONNECT==> AnotherProxy-n) ==GET1(IF is http)/CONNECT1(IF is https)==> Destination_URL