urllib2能发送HTTP/1.1请求吗?
编辑:
这个问题不成立。实际上是一个透明代理在进行后续的HTTP 1.0请求,尽管最开始urllib/httplib确实是发出了HTTP 1.1的请求。
原始问题:
默认情况下,urllib2.urlopen
总是发出HTTP 1.0的请求。
有没有办法让它使用HTTP 1.1呢?
2 个回答
3
urllib2是用来发送HTTP请求的,它依赖于httplib这个模块。我的Python 2.6.4版本在httplib中确实使用的是HTTP/1.1协议,虽然它也能处理来自1.1、1.0或0.9版本服务器的响应。从Python 2.3开始,似乎就是这样(可能早到1.5版本)。
不过,如果需要通过代理进行隧道连接,它会发送这样的请求:
CONNECT host:port HTTP/1.0
而这个/1.0的字符串是写死在代码里的。
你使用的是什么版本的Python?你是怎么使用urllib2的?
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请求了。