Browser erhalten unter Windows 7 64-Bit-Betriebssystem keine komprimierten Seiten

Browser erhalten unter Windows 7 64-Bit-Betriebssystem keine komprimierten Seiten

Ich habe ein seltsames Problem mit meinem 64-Bit-PC mit Windows 7 bei der Arbeit. Ich verwalte einige Linux-Webserver, die gzippte Inhalte (JS, CSS, HTML) bereitstellen. Das seltsame Verhalten besteht darin, dass alle Browser in meinem System (Firefox, Chrome, Vivaldi), die Inhalte von diesen Linux-Servern anfordern (ich kann den Accept-Encoding: gzip,deflateHeader problemlos sehen), diese aber nicht erhalten. Alle Antworten kommen mit , sodass der Inhalt nicht komprimiert bereitgestellt wird. Wenn Sie die Option jedoch in der Befehlszeile Transfer-Encoding: chunkedausführen , kommt die Antwort mit und Headern und wird wie vorgesehen gzippt. Von einem Windows 2008 R2-Server wird der Inhalt gzippt bereitgestellt.curl--compressedContent-Type: gzipContent-Length

Die Bereitstellung des Inhalts im gzip-Format funktioniert auf diesen Linux-Webservern garantiert problemlos.

Es ist ein pfSense-Proxy beteiligt, aber selbst wenn ich ihn in den Proxy-Einstellungen überschreibe, sodass der Browser den Inhalt direkt von den Linux-Servern anfordert, ist das Verhalten dasselbe. Keine Änderung, mit oder ohne Proxy.

Ich habe das Problem mit Firefox und Chrome auf einem anderen 64-Bit-PC mit Windows 7 bestätigt. Daher komme ich zu dem Schluss, dass das Betriebssystem irgendwie an diesem seltsamen Browserverhalten beteiligt ist.

Kann das jemand bestätigen...?

Antwort1

Dies kann irreführend sein: Um die gzippte Datei in einer Nachricht zu senden, muss der Server über die gesamte Datei verfügen und ihre Größe kennen, was in Ihrem Fall anscheinend nicht der Fall ist, wie Sie selbst sagten:

Wenn Sie curl in der Befehlszeile mit der --compressedOption ausführen, enthält die Antwort Content-Type: gzipHeader Content-Lengthund ist wie vorgesehen gzippt.

Ich denke, dass in Ihrem Fall der ServerRohredie Ausgabe an gzip und leitet das Ergebnis dann direkt an den Browser weiter, ohne die Daten zuerst auf die Festplatte zu schreiben, um die Dateigröße zu berechnen. Da der Server die Größe nicht im Voraus kennt, hat er keine andere Wahl, als einen Stream mit Transfer-Encoding: chunkedso vielen Teilen zurückzugeben, wie verfügbar sind.

Sobald Daten verfügbar sind, werden sie in Blöcken zurückgegeben und vom Browser wieder zusammengesetzt. Die empfangenen Daten werden jedoch trotzdem gzippt, auch wenn sie in Blöcken empfangen werden.

verwandte Informationen