Seite 1 von 1
CGIHTTPServer und os.environ['HTTP_ACCEPT_ENCODING']
Verfasst: Sonntag 27. Februar 2005, 12:13
von jens
Hab gerade festgestellt, das CGIHTTPServer nicht die Variable HTTP_ACCEPT_ENCODING setzt
Weiß jemand wie man den Server so modifizieren kann, das die Variable gesetzt wird?
Verfasst: Sonntag 27. Februar 2005, 15:35
von XT@ngel
Hi,
ich glaub ein Blick auf die Instanz Variabeln von BaseHTTPserver hilft dir weiter.
Du musst nur den requerst Header auswerten, dann kommst du auch an User-Agent..
MfG
andreas
Verfasst: Montag 7. März 2005, 16:38
von jens
Der HTTP_USER_AGENT ist nicht das Problem... der ist in os.environ vorhanden...
In CGIHTTPServer.py bei def run_cgi() werden alle Möglichen Environ-Einträge gesetzt... Aber "HTTP_ACCEPT_ENCODING" ist nicht dabei... Dort gibt es "self.headers", welches wohl Information des geschickten Headers bereit hält. Die Variable wird in BaseHTTPServer.parse_request() gesetzt:
Code: Alles auswählen
# Examine the headers and look for a Connection directive
self.headers = self.MessageClass(self.rfile, 0)
Außerdem ist in der Funktion parse_request() ein Hinweis zu finden:
The request should be stored in self.raw_requestline; the results
are in self.command, self.path, self.request_version and
self.headers.
Bringt mich jetzt aber auch nicht so weiter...
Verfasst: Dienstag 8. März 2005, 00:20
von BlackJack
'HTTP_ACCEPT_ENCODING' ist ein Header, der zu HTTP 1.1 gehört. Der CGIServer spricht nur HTTP 1.0, wahrscheinlich liegt's daran.
Verfasst: Dienstag 8. März 2005, 16:52
von jens
Das könnte es sein... Ob es wohl eine einfache Möglichkeit gibt, diese Environment-Variable nach zu rüsten??? Ich wüßte nicht wie
EDIT: Meine Hack-Lösung besteht nun darin, einfach in dem Skript mit dem der Server gestartet wird, ein
os.environ["HTTP_ACCEPT_ENCODING"] = "gzip" zu machen... Somit ist es zwar unabhängig von dem was der Browser wirklich kann, aber welcher Browser kann es eigentlich nicht???