我使用urllib2做一個使用Python 2.7.3的http post請求。我的請求正在返回HTTPError異常(HTTP錯誤502:代理錯誤)。奇怪的重定向位置導致與urllib2的代理錯誤
看着與查爾斯消息流量,我看到下面正在發生的事情:
- 我使用的urllib2
- 的發送HTTP請求(POST /index.asp?action=login HTTP/1.1)遠程服務器回覆狀態303和位置標頭../index.asp?action=news
- urllib2重試發送獲取請求:(GET /../index.asp?action=news HTTP/1.1)
- 遠程服務器回覆狀態502(代理錯誤)
的502答覆包括本會在響應正文:「DNS查找失敗的:10.0.0.30:80index.asp」(注意格式不正確的URL)
所以我認爲這意味着,關於代理服務器遠程服務器的網絡會在請求中看到「/../index.asp」URL,並將其誤解,並將請求發送給錯誤的URL。
當我用我的瀏覽器(Chrome)發出同樣的請求時,重試會發送到GET /index.asp?action=news。因此,Chrome取消了URL中的前導「/ ..」,並且遠程服務器回覆了有效的響應。
這是一個urllib2錯誤嗎?有什麼我可以做的,所以重試忽略URL中的「/ ..」?或者有其他方法可以解決這個問題嗎?認爲它可能是一個urllib2錯誤,我用請求換出了urllib2,但請求產生了相同的結果。當然,這可能是因爲請求建立在urllib2上。
感謝您的任何幫助。
當您在Chrome中嘗試時,位置標頭是'../ index.asp?action = news'以及? –
我認爲這是一個無效的位置,在這種情況下,它確實是服務器配置中的一個錯誤。如果是這樣的話,那麼Chrome和許多其他瀏覽器都可以解決這個問題,這並不意味着'urllib2'不是這樣做的錯誤。 – abarnert