urllib2可以发送HTTP/1.1请求吗?

3

编辑:

此问题无效。原来是一个透明代理正在进行HTTP 1.0请求,尽管urllib/httplib最初确实发出了HTTP 1.1请求。

原始问题:

默认情况下,urllib2.urlopen总是发起HTTP 1.0请求。

是否有任何方法让它使用HTTP 1.1?

2个回答

12

你认为为什么它尚未使用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

(等等等等)? 这应该显示它已经发送了一个1.1的GET请求。


3

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版本。请查看这个自问自答的后续问题,以获取通过Squid进行HTTPS连接的持续HTTP 1.1解决方案http://stackoverflow.com/questions/1841730/how-can-urllib2-httplib-make-http-1-1-for-https-connections-via-a-squid-proxy/1841740 - Cheekysoft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接