質問: 「connect」と「gethttps」の違いは何ですか? 実際の質問に入る前に、私のプロジェクトがどのように機能するかを説明しましょう。簡単にするために、プロキシはラップトップ上にあり、クライアント(ブラウザー)もあります。リモートサーバーは、たとえばyoutubeになります。switchomegaプラグインのおかげで、クライアントはプロキシの特定のポートに接続されています。クライアントはwww.youtube.comに接続することを望んでおり、プロキシは次のリクエストを取得します。connect www.youtube.com:443 http/1.1 host: www.youtube.com:443 proxy-connection: keep-alive user-agent: mozilla/5.0 (x11; linux x86_64) applewebkit/537.36 (khtml, like gecko) chrome/49.0.2623.87 safari/537.36 プロキシがconnectリクエストを受け取ると、ip:portへのtcp接続を開き、200 okメッセージをクライアントに返し、データを送信する必要があると言われました。接続の片側が閉じるまで。httpリクエストを追跡する別のプラグインであるhttpトレースを使用すると、ブラウザーに別のリクエストが表示されます。get https://www.youtube.com/ accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 and other data... では、なぜhttpトレースがconnect www.youtube.com:443 http/1.1を表示しているのに、プロキシがget https://www.youtube.com/を受信するのでしょうか。それらは同じことを意味しますか?
回答: [〜#〜] connect [〜#〜]はリクエストを処理します [〜#〜]接続[〜#〜] connectメソッドは、要求の接続を透過的なtcp/ipトンネルに変換し、通常、暗号化されていないhttpプロキシを介したssl暗号化通信(https)を容易にします。 一方[〜#〜] get [〜#〜]はデータを取得します。 [〜#〜] get [〜#〜] getメソッドは、指定されたリソースの表現を要求します。 getを使用したリクエストは、データを取得するだけで、他の効果はありません。 (これは他のいくつかのhttpメソッドにも当てはまります。)w3cは、この区別に関するガイダンス原則を公開しており、「webアプリケーションの設計は、上記の原則だけでなく、関連する制限によっても通知される必要があります」と述べています。 ソース-ハイパーテキスト転送プロトコル