2011-04-21 315 views
0

我的代碼試圖導航網址通過外部進程提供給它的,但最近我發現了一個bug在HttpWebRequest的重定向 在案件的網址爲http://ask.bitauto.com/TreeAsk/index.aspxHttpWebRequest的重定向失敗

,我發現這是什麼網址獲取瀏覽器導航成功當指定的HTTP Referer的,但淨的WebRequest的失敗(但不提供任何例外),即使.Refer分配,在啓用失敗與MaxRedirect AutoRedirects的情況下達到例外

根據MSDN

「如果AllowAutoRedirect屬性爲true,當請求被重定向到另一個站點時,Referer屬性自動設置。「

這是否意味着在同一站點重定向的處理方式不同。請讓我知道如果有人有任何想法如何解決這個問題。

由於提前

回答

1

我覺得這個問題的根源是中http://ask.bitauto.com/TreeAsk/index.aspx

按照你的鏈接(因此具有引薦計算器)導致這樣的回答:

HTTP/1.1 302 Found 
Date: Thu, 21 Apr 2011 07:28:03 GMT 
Server: Microsoft-IIS/6.0 
X-Powered-By: ASP.NET 
X-AspNet-Version: 2.0.50727 
Location: 
Cache-Control: private 
Content-Type: text/html; charset=utf-8 
Content-Length: 117 

通知空Location頭 - 從服務器的應答是重定向到什麼都沒有。

編輯:

這似乎是空的重定向頁面,如果你有沒有引用或non-ask.bitauto.com引用時,纔會顯示。將目標網址設置爲引薦來源會產生200 OK答案。

編輯2:

空Location頭行爲不是根據RFC2616,並且它似乎是不同的web劑反應,因此在different way

我認爲最適合您的解決方案是在您的請求中指定HTTPWebRequest.Referrer

+0

根據我對HTTP協議空白位置標題的理解,意味着你被重定向到同一頁面,HTTPWebRequest也是如此,但是在這種情況下它並沒有設置Referer Header,這種情況一次又一次地導致了來自服務器的相同響應, MaximumAutomaticRedirections。 – CodeWrite 2011-04-21 08:07:32

+0

我沒有發現任何支持該重定向行爲的源代碼,編輯了這個答案來反映這一點。 – 2011-04-21 08:18:26

+0

我認爲你是對的我正在使用HTTPWebRequest的AutoRedirect屬性,導致問題。 我在使用Referer手動重定向,在達到MaximumAutomaticRedirections之後,行爲使得HTTPWebRequest不可預知,程序崩潰。 現在遵循你的建議,我關閉了AutomaticRedirects及其正常工作。 感謝您的諮詢! – CodeWrite 2011-04-21 08:37:31