Frage

EDIT:

Diese Frage ist ungültig. Es stellte sich heraus ein transparenter Proxy wurde sie ein Weiter HTTP 1.0 Anforderung obwohl urllib / httplib in der Tat war ursprünglich eine HTTP 1.1-Anforderung zu machen.

ORIGINAL FRAGE:

In der Standardeinstellung urllib2.urlopen macht immer eine HTTP 1.0 Anfrage.

Gibt es eine Möglichkeit, es zu bekommen HTTP 1.1 zu sprechen?

War es hilfreich?

Lösung

Warum denken Sie, dass es nicht bereits mit http 1.1? Haben Sie versucht, so etwas wie ...:

>>> 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)? Dies sollte zeigen, es ist schon eine 1.1-GET-Anfrage zu senden.

Andere Tipps

urllib2 verwendet httplib auf HTTP-Anforderungen zu machen. Mein Python 2.6.4 auf jeden Fall verwendet HTTP / 1.1 in httplib, obwohl es Antworten von 1,1, 1,0 oder 0,9-Server verarbeiten kann. Bereits in 2.3, scheint dies der Fall zu sein (und möglicherweise zurück bis 1,5)

Wenn es jedoch zu Tunnel über einen Proxy erforderlich ist, wird es eine Anfrage wie folgt an:

CONNECT host:port HTTP/1.0

Und die /1.0 String ist hartcodiert.

Welche Version von Python verwenden Sie und wie sind Sie mit urllib2?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top