Può fare urllib2 HTTP / 1.1 richieste?
Domanda
EDIT:
Questa domanda non è valida. Scopre un proxy trasparente faceva un proseguimento HTTP 1.0 richiesta anche se urllib / httplib era effettivamente facendo una richiesta HTTP 1.1 originariamente.
domanda iniziale:
Per impostazione predefinita urllib2.urlopen
fa sempre una richiesta HTTP 1.0.
C'è un modo per farlo parlare HTTP 1.1?
Soluzione
Perché pensi che non è già utilizzando HTTP 1.1? Hai provato qualcosa di simile ...:
>>> 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)? Questo dovrebbe mostrare è l'invio di una richiesta già 1.1 GET.
Altri suggerimenti
urllib2 usa httplib per effettuare richieste HTTP. Il mio Python 2.6.4 utilizza sicuramente HTTP / 1.1 in httplib, anche se in grado di gestire le risposte da un server 1.1, 1.0 o 0.9. Già nel 2.3, questo sembra essere il caso (e, eventualmente, di nuovo a 1.5)
Tuttavia, se è richiesto di tunnel attraverso un proxy, invierà una richiesta in questo modo:
CONNECT host:port HTTP/1.0
E che /1.0 stringa è hard-coded.
Quale versione di Python stai usando, e come stai usando urllib2?