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

时间:2009-12-03 16:11:15

标签: python http urllib2

编辑:

这个问题无效。事实证明透明代理正在进行转发HTTP 1.0请求,即使urllib / httplib最初确实发出了HTTP 1.1请求。

原始问题:

默认情况下urllib2.urlopen始终发出HTTP 1.0请求。

有没有办法让它与HTTP 1.1交谈?

2 个答案:

答案 0 :(得分: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请求。

答案 1 :(得分: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?