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?

È stato utile?

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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top