78

私は WebClient ライブラリを構築しています。CONNECT現在、プロキシ機能を実装しているため、いくつかの調査を行っており、メソッドを使用して URL を要求するコードを見ました。

しかし、私の Web ブラウザーで確認すると、メソッドは使用されず、CONNECT代わりに GET メソッドが呼び出されます。

だから私は混乱しています。いつ両方の方法を使用する必要がありますか?

4

4 に答える 4

89

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
于 2012-07-28T03:23:56.117 に答える
19

経験則として、GET はプレーン HTTP に使用され、CONNECT は HTTPS に使用されます。

ただし、詳細があるため、おそらく関連する RFC を読みたいと思うでしょう。

http://www.ietf.org/rfc/rfc2068.txt http://www.ietf.org/rfc/rfc2817.txt

于 2012-07-28T03:14:42.147 に答える