CGIHTTPServer und os.environ['HTTP_ACCEPT_ENCODING']

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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?
XT@ngel
User
Beiträge: 255
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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...
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.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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