プロトコルのより細かい点のいくつかをより深く理解し、途中でいくつかのソケットプログラミングを学ぶために、HTTPプロキシサーバーを実装したいと思いますが、本格的なHTTPサーバーを実装したくありません。プロキシを実装したいだけの場合に焦点を当てるべき、関連するRFCページとそれらのページのセクションは何ですか?
計画は、通常のHTTPプロキシから始めて、それをHTTPSプロキシに拡張する可能性があることです。
プロトコルのより細かい点のいくつかをより深く理解し、途中でいくつかのソケットプログラミングを学ぶために、HTTPプロキシサーバーを実装したいと思いますが、本格的なHTTPサーバーを実装したくありません。プロキシを実装したいだけの場合に焦点を当てるべき、関連するRFCページとそれらのページのセクションは何ですか?
計画は、通常のHTTPプロキシから始めて、それをHTTPSプロキシに拡張する可能性があることです。
私も現在取り組んでいます。基本的な実装は簡単です。ソケットポートでリッスンし、ホストを見つけ、リモートサーバーに接続し、httpヘッダーを送信し、サーバーから受信してから、クライアントに送り返します。難しい部分は、一貫した接続とパイプライン化です。
HTTPに関しては、そのヘッダーは次のようになります。
CONNECT addons.mozilla.org:443 HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0
Host: addons.mozilla.org
プロキシはサーバーに接続し、クライアントに200メッセージを返信してから、リダイレクタとして前後にリダイレクトする必要があります。
これを確認してください:https ://datatracker.ietf.org/doc/html/draft-luotonen-ssl-tunneling-03
HTTP 1.0(RFC 1945)とHTTP 1.1(RFC 2616)を見てみましょう。また、以下を確認することもできます。
Googleで見つけることができるサンプルコードはおそらくたくさんあります!
IETFのHTTPbisグループの作業も役立つかもしれません。仕様を書き直して、より明確で実装しやすくしています。
詳細については 、 http://trac.tools.ietf.org/wg/httpbis/trac/wiki を参照してください。