7 Stimmen

Wie kann man programmatisch überprüfen, ob auf dem Webserver die http-Komprimierung aktiviert ist?

Ich möchte überprüfen, ob auf dem Webserver die http-Komprimierung aktiviert ist und eine bestimmte Komprimierung (z. B. Gzip, Deflate, Compress) aktiviert ist.

Oder wenn ich Daten über ein WebClient-Objekt in .net anfordere, indem ich Accept-Encoding auf "gzip, deflate" setze, wie kann ich wissen, ob die abgerufenen Daten komprimiert sind, bevor ich sie verarbeite?

9voto

Brian R. Bondy Punkte 325712

Um die Kodierung des Antwortkörpers zu überprüfen, sollten Sie den HTTP-Antwort-Header prüfen: Inhalt-Kodierung.

Der Server darf nur Kodierungen verwenden, die durch den Request-Header accept-encoding angegeben sind. Wenn der Server keine Antwort mit einer der angegebenen accept-encodings geben kann, muss er mit 406 (Not Acceptable) antworten.

Beispielanfrage:

GET / HTTP/1.1
Host: www.brianbondy.com
Accept-Encoding: gzip,deflate

Beispielantwort:

HTTP/1.1 200 OK
Date: Thu, 04 Dec 2003 16:15:12 GMT
Server: Apache/2.0
Content-Encoding: gzip
Content-Length: 1533

Andere Beispiele für Accept-Encoding:

 Accept-Encoding: compress, gzip
 Accept-Encoding:
 Accept-Encoding: *
 Accept-Encoding: compress;q=0.5, gzip;q=1.0
 Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0

Wie kann man genau WISSEN, welche Kodierungen auf dem Server verfügbar sind?

Es gibt keine Möglichkeit, genau zu wissen, welche Kodierungen auf Serverebene verfügbar sind, da einige Server bestimmte Kodierungen nur für bestimmte Dateitypen unterstützen.

Das bedeutet, dass Sie bestenfalls die Frage beantworten können: Ist für die in der ersten Zeile der Anfrage angegebene Datei die spezifische Kodierung für diese Datei verfügbar? Sie können diese Frage beantworten, indem Sie die Identität content-encoding explizit ablehnen und auch die Kodierung angeben, die Sie wissen möchten.

Accept-Encoding: gzip, identity;q=0

Quelle der Beispiele, HTTP RFC

4voto

Thomas Punkte 160390

Von der HTTP-Spezifikation :

4 . Die Inhaltskodierung "Identität" ist immer zulässig, es sei denn ausdrücklich abgelehnt, weil das Feld Accept-Encoding Folgendes enthält "identity;q=0" enthält, oder weil das Feld "*;q=0" enthält und nicht ausdrücklich die Inhaltskodierung "identity" enthält. Wenn der Accept-Encoding-Feldwert leer ist, wird nur die "identity"-Kodierung Kodierung akzeptabel.

Wenn Sie also Accept-Encoding: identity;q=0, gzip, deflate zwingen Sie den Server, die Datei zu komprimieren, oder Sie erhalten eine 406 (Not Acceptable).

0voto

Murat Yasar Punkte 1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X