這個問題是無效的。原來透明代理正在作出即使的urllib/httplib的確實作出HTTP 1.1請求最初的向前HTTP 1.0請求。
原來的問題:
默認urllib2.urlopen
總是讓一個HTTP 1.0請求。
有什麼辦法得到它談的HTTP 1.1嗎?
這個問題是無效的。原來透明代理正在作出即使的urllib/httplib的確實作出HTTP 1.1請求最初的向前HTTP 1.0請求。
原來的問題:
默認urllib2.urlopen
總是讓一個HTTP 1.0請求。
有什麼辦法得到它談的HTTP 1.1嗎?
爲什麼你認爲它不是已經使用了HTTP 1.1嗎?你有沒有嘗試類似...:
>>> import urllib2
>>> urllib2._opener.handlers[1].set_http_debuglevel(100)
>>> urllib2.urlopen('http://mit.edu').read()[:10]
connect: (mit.edu, 80)
send: 'GET/HTTP/1.1
(etc等)?這應該表明它已經發送了一個1.1 GET請求。
的urllib2使用httplib的進行HTTP請求。我的Python 2.6.4在httplib中肯定使用HTTP/1.1,儘管它可以處理來自1.1,1.0或0.9服務器的響應。早在2.3,這似乎是的情況下(以及可能回到1.5)
然而,如果它是通過代理需要隧道,它將發送類似的請求:
CONNECT host:port HTTP/1.0
並且該/1.0字符串是硬編碼的。
你使用的是什麼版本的Python,以及如何使用urllib2?
我使用的是2.4和2.5。請參閱這個自我回答的後續問題,以解決正在進行的HTTP 1.1通過魷魚HTTPS連接http://stackoverflow.com/questions/1841730/how-can-urllib2-httplib-make-http-1-1-對於-HTTPS的連接通孔-A-魷魚代理/ 1841740 – Cheekysoft 2009-12-03 18:03:03