Браузеры не получают сжатые страницы в Windows 7 64-битной ОС

Браузеры не получают сжатые страницы в Windows 7 64-битной ОС

У меня странная проблема с моим ПК с Windows 7 64-бит на работе. Я администрирую несколько веб-серверов Linux, которые обслуживают сжатый gzip-контент (js, css, html). Странное поведение заключается в том, что когда все браузеры в моей системе (Firefox, Chrome, Vivaldi) запрашивают контент с этих серверов Linux (я Accept-Encoding: gzip,deflateпрекрасно вижу заголовок), они его не получают. Все ответы приходят с Transfer-Encoding: chunked, поэтому контент не сжимается. Однако при запуске curlв командной строке с --compressedопцией ответ приходит с Content-Type: gzipзаголовками Content-Lengthи и сжимается gzip, как и должно быть. С сервера Windows 2008 R2 контент обслуживается сжатым gzip.

Передача содержимого в сжатом виде на этих веб-серверах Linux гарантированно работает нормально.

Включен прокси pfSense, но даже если я переопределяю его в настройках прокси, чтобы браузер запрашивал контент напрямую с серверов Linux, поведение остается прежним. Никаких изменений, с прокси или без него.

Я подтвердил проблему с Firefox и Chrome на другом ПК с Windows 7 64-бит. Поэтому я пришел к выводу, что ОС каким-то образом вовлечена в это странное поведение браузера.

Может ли кто-нибудь подтвердить...?

решение1

Это может быть обманчиво: чтобы отправить сжатый gzip-файл в одном сообщении, серверу необходимо иметь весь файл в наличии и знать его размер, чего, по-видимому, в вашем случае не происходит, как вы сами сказали:

Запустив curl в командной строке с --compressedопцией , ответ приходит с Content-Type: gzipзаголовками Content-Lengthи сжат, как и положено.

Я думаю, что в вашем случае сервертрубывывод в gzip, а затем передает результат напрямую в браузер без предварительной записи данных на диск для вычисления размера файла. Не зная заранее размера, сервер не имеет иного выбора, кроме как вернуть поток с Transfer-Encoding: chunkedтаким количеством частей, которые станут доступны.

По мере того, как данные становятся доступными, они будут возвращаться в виде фрагментов, которые будут повторно собраны браузером. Однако полученные данные все еще сжаты gzip, даже если они получены фрагментами.

Связанный контент