2009-12-03 2 views
3

EDIT:Может ли urllib2 делать запросы HTTP/1.1?

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

ORIGINAL ВОПРОС:

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

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

ответ

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 определенно использует HTTP/1.1 в httplib, хотя он может обрабатывать ответы от сервера 1.1, 1.0 или 0.9. Еще в 2.3, это, кажется, случай (и, возможно, обратно до 1,5)

Однако, если требуется, чтобы туннель через прокси-сервер, он будет посылать запрос, как это:

CONNECT host:port HTTP/1.0 

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

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

+0

Я использую 2.4 и 2.5. Пожалуйста, ознакомьтесь с этим ответом на вопрос, связанный с ответом на текущее HTTP 1.1 через squid для соединений HTTPS. Http://stackoverflow.com/questions/1841730/how-can-urllib2-httplib-make-http-1-1- для-протокол HTTPS соединений, с помощью мини-кальмаров прокси/1841740 – Cheekysoft

Смежные вопросы