我正嘗試在c#中編寫一個小型代理服務器。它對我測試過的許多網頁(包括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
恕我直言,這看起來是正確的。這是我得到的迴應(被遺漏的某些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