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

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