C# で小さなプロキシ サーバーを作成しようとしています。私がテストした多くの Web ページ (google.com と microsoft.com を含む) でうまく機能しています。テストのために、プロキシ サーバーを起動し、それを使用するように Windows 8 で IE 10 を構成しました。
しかし、wikipedia.org を試してみると、メイン ページのみが読み込まれ、画像は読み込まれません。単一の画像をロードしようとしました ( http://upload.wikimedia.org/wikipedia/commons/6/63/Wikipedia-logo.png )。プロキシなしで IE を使用すると動作しますが、プロキシを使用すると 404 応答が返されます。
これは IE (私のプロキシはそれを転送するだけです) が発行する GET リクエストです:
GET http://upload.wikimedia.org/wikipedia/commons/6/63/Wikipedia-logo.png HTTP/1.1
Accept: text/html, application/xhtml+xml, */*\
Accept-Language: de-CH\
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
Accept-Encoding: gzip, deflate
Host: upload.wikimedia.org
DNT: 1
Proxy-Connection: Keep-Alive
IMHOそれは正しいように見えます。これは私が得る応答です(いくつかのhtmlタグを省略しました):
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=UTF-8
X-Varnish: 1427845074 1427806476, 274786836, 3671934588
Via: 1.1 varnish, 1.1 varnish, 1.1 varnish
Content-Length: 262
Accept-Ranges: bytes
Date: Mon, 01 Jul 2013 21:30:54 GMT
Age: 28
Connection: keep-alive
X-Cache: cp1063 hit (1), cp3004 miss (0), cp3003 frontend miss (0)
Access-Control-Allow-Origin: *
...404 Not Found\n The resource could not be found.\nRegexp failed to match URI: "http:/upload.wikimedia.org/wikipedia/commons/6/63/Wikipedia-logo.png"
奇妙な部分はここにあります:
Regexp failed to match URI: "http:/upload.wikimedia.org/wikipedia/commons/6/63/Wikipedia-logo.png"
-> URL は http:/ で始まります
コードでは、次のように uploads.wikimedia.org に接続します。
// connect to uploads.wikimedia.org
ServerSocket.Connect(RemoteHost, 80);
byte[] SendBuffer = Request.ToArray();
// send the clients request to the server
ServerSocket.Send(SendBuffer);
なぜうまくいかないのかわかりません。どんな助けでも大歓迎です。私の完全なコードは Github にあります: Proxy_C_Sharp