2010-02-23 109 views
4

奇怪的是,我試圖讀取<頭>部分的很多不同的網站和一個特定類型的服務器, Apache,有時會給代碼403禁止。並不是所有的Apache服務器都這樣做,所以它可能是一個配置設置或服務器的特定版本。System.Net.WebClient請求獲取403 Forbidden,但瀏覽器不與Apache服務器

當我用網頁瀏覽器(例如Firefox)檢查網址時,網頁加載正常。該代碼八九不離十是這樣的:

var client = new WebClient(); 
var stream = client.OpenRead(new Uri("http://en.wikipedia.org/wiki/Barack_Obama")); 

通常情況下,403是一個訪問權限故障之類的事情,但這些通常是不安全的網頁。我認爲Apache正在過濾請求頭中的某些內容,因爲我不打算創建任何內容。

也許有人對Apache有更多的瞭解,可以給我一些關於標題中缺少的東西的想法。我想保持儘可能小的頭部以儘量減少帶寬。

感謝

回答

9

嘗試設置的UserAgent頭:

string _UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"; 
client.Headers.Add(HttpRequestHeader.UserAgent, _UserAgent); 
+0

這是我所需要的提示。謝謝! – 2012-02-20 21:59:26

+0

403也可能由TLS問題引起。爲了驗證,你應該檢查WebException.Response對象的文本。或者,嘗試將其添加到您的代碼中: 'ServicePointManager.SecurityProtocol =(SecurityProtocolType)3072;' 這將強制TLS 1.2 – 2018-01-16 16:06:23

1

這可能是用戶代理頭的問題,因爲「thedugas」之稱,或事實上任何瀏覽器悄悄配置做。例如,它可能是不使用瀏覽器正在使用的代理服務器,或者不使用代理服務器的正確憑據。這些東西可能已經配置到瀏覽器中,所以你不知道他們需要完成。

2

我有一個類似的問題,下面的設置解決了它

Client.Headers["Accept"] = "application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"; 
Client.Headers["User-Agent"] ="Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC)"; 
相關問題