Pregunta

EDIT:

Esta pregunta no es válido. Resulta que un proxy transparente estaba haciendo una adelante petición HTTP 1.0 a pesar de que urllib / httplib era de hecho haciendo una petición HTTP 1.1 originalmente.

pregunta original:

Por defecto urllib2.urlopen siempre hace una petición HTTP 1.0.

¿Hay alguna manera de conseguir que se hable de HTTP 1.1?

¿Fue útil?

Solución

¿Por qué cree que no está ya utilizando HTTP 1.1? ¿Usted ha intentado algo así como ...:

>>> 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

(etc, etc)? Esto debería mostrar que está enviando una solicitud GET 1.1 ya.

Otros consejos

urllib2 utiliza httplib para realizar peticiones HTTP. Mi Python 2.6.4 definitivamente utiliza HTTP / 1.1 en httplib, a pesar de que puede manejar las respuestas de un servidor 1.1, 1.0 o 0.9. Ya en 2.3, esto parece ser el caso (y posiblemente de nuevo a 1,5)

Sin embargo, si se requiere para hacer un túnel a través de un proxy, se enviará una solicitud de esta manera:

CONNECT host:port HTTP/1.0

Y que /1.0 cadena está codificada.

¿Qué versión de Python está usando, y cómo se está utilizando urllib2?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top