Может ли urllib2 делать HTTP / 1.1 запросы? - PullRequest
3 голосов
/ 03 декабря 2009

EDIT:

Этот вопрос недействителен. Оказывается, прозрачный прокси-сервер выполнял входящий запрос HTTP 1.0, хотя urllib / httplib действительно первоначально делал запрос HTTP 1.1.

ОРИГИНАЛЬНЫЙ ВОПРОС:

По умолчанию urllib2.urlopen всегда делает запрос HTTP 1.0.

Есть ли способ заставить его говорить по HTTP 1.1?

Ответы [ 2 ]

12 голосов
/ 03 декабря 2009

Почему вы думаете, что он еще не использует 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

(и т. Д. И т. Д.)? Это должно показать, что он уже отправляет запрос GET 1.1.

3 голосов
/ 03 декабря 2009

urllib2 использует httplib для выполнения HTTP-запросов. Мой Python 2.6.4 определенно использует HTTP / 1.1 в httplib, хотя он может обрабатывать ответы от сервера 1.1, 1.0 или 0.9. Еще в 2.3 это, кажется, имеет место (и, возможно, обратно в 1.5)

Однако, если требуется туннелировать через прокси, он отправит запрос следующим образом:

CONNECT host:port HTTP/1.0

И эта строка / 1.0 жестко закодирована.

Какую версию python вы используете и как вы используете urllib2?

...