・Proxyサーバに必要なコマンドなどがまとめられたページなど、サーバを作る際に役に立ちそうなページ
・Proxyサーバ実装のチュートリアルみたいなページ(C#でなくても可)
・C#でかれたたProxyサーバのソース
RubyのWEBrickでやっとけとかProxomitronのフィルターでやっとけとかは無しでお願いします。
HTTP Proxy の動作は基本的に HTTP サーバと同じで、HTTP プロトコルのリクエストを受け付け、代理(Proxy)として HTTP サーバに接続し、受け取った結果をクライアントに返すことになりますので「必要なコマンド」は「HTTP リクエスト」と同じということになります。
通常の HTTP リクエストは以下のような形で、HTTP サーバに到着しますが、
「GET /index.html HTTP/1.0」
ブラウザの Proxy 機能をオンにすると、HTTP リクエストは以下のような形で、Proxy サーバに到着するようになります。
「GET http://www.example.com/index.html HTTP/1.0」
Proxy は、URL 部分を、アドレスとパスに分解、「www.example.com」のアドレスで待っている HTTP サーバに接続、「GET /index.html HTTP/1.0」という要求を出して、結果を受領、クライアントに返します。
C# ではなく Perl ですが、以下の場所に Proxy サーバのサンプルがあります。
http://x68000.q-e-d.net/~68user/net/http-proxy.html
勘所は以下の Proxy リクエストを解析、HTTP リクエストに変換する部分です。
193: if ( m|^([A-Z]+) [a-zA-Z]+://(.*?)/(.*?) (HTTP/\d\.\d)$|i ){ 197: ($method, $host, $path, $proto_ver) = ($1, $2, $3, $4); 208: $new_req = "$method /$path $proto_ver\r\n";
単純な正規表現で 4 つの要素に分解し、くっつけなおしているだけであり、一切「コマンド」としての扱いは行っていません。つまり、純粋な Proxy サーバには「コマンド」を理解する機能は不要なのです。
一応、HTTP リクエストは以下に一覧がありますが、事実上、PUT、POST、HEAD くらいしか利用されません。
http://www.7key.jp/nw/http1.html#request
もし、キャッシュ指向の Proxy サーバを作る場合、GET だけに着目して作れば十分でしょう。
HTTP Proxy の動作は基本的に HTTP サーバと同じで、HTTP プロトコルのリクエストを受け付け、代理(Proxy)として HTTP サーバに接続し、受け取った結果をクライアントに返すことになりますので「必要なコマンド」は「HTTP リクエスト」と同じということになります。
通常の HTTP リクエストは以下のような形で、HTTP サーバに到着しますが、
「GET /index.html HTTP/1.0」
ブラウザの Proxy 機能をオンにすると、HTTP リクエストは以下のような形で、Proxy サーバに到着するようになります。
「GET http://www.example.com/index.html HTTP/1.0」
Proxy は、URL 部分を、アドレスとパスに分解、「www.example.com」のアドレスで待っている HTTP サーバに接続、「GET /index.html HTTP/1.0」という要求を出して、結果を受領、クライアントに返します。
C# ではなく Perl ですが、以下の場所に Proxy サーバのサンプルがあります。
http://x68000.q-e-d.net/~68user/net/http-proxy.html
勘所は以下の Proxy リクエストを解析、HTTP リクエストに変換する部分です。
193: if ( m|^([A-Z]+) [a-zA-Z]+://(.*?)/(.*?) (HTTP/\d\.\d)$|i ){ 197: ($method, $host, $path, $proto_ver) = ($1, $2, $3, $4); 208: $new_req = "$method /$path $proto_ver\r\n";
単純な正規表現で 4 つの要素に分解し、くっつけなおしているだけであり、一切「コマンド」としての扱いは行っていません。つまり、純粋な Proxy サーバには「コマンド」を理解する機能は不要なのです。
一応、HTTP リクエストは以下に一覧がありますが、事実上、PUT、POST、HEAD くらいしか利用されません。
http://www.7key.jp/nw/http1.html#request
もし、キャッシュ指向の Proxy サーバを作る場合、GET だけに着目して作れば十分でしょう。
HTTPProxy独自のコマンドってないんですね。
参考になります^^
CONNECTはプロクシ用のメソッドですね。HTTPのみに対応したプロクシもどきであれば,furutanianさんの示された方法で十分かとは思いますが。
ありがとうございます
HTTPProxy独自のコマンドってないんですね。
参考になります^^