Os navegadores não obtêm páginas compactadas no sistema operacional Windows 7 de 64 bits

Os navegadores não obtêm páginas compactadas no sistema operacional Windows 7 de 64 bits

Tenho um problema estranho no meu PC com Windows 7 de 64 bits no trabalho. Eu administro alguns servidores web Linux que fornecem conteúdo compactado (js, css, html). O comportamento estranho é que quando todos os navegadores do meu sistema (Firefox, Chrome, Vivaldi) solicitam conteúdo desses servidores Linux (posso ver o Accept-Encoding: gzip,deflatecabeçalho perfeitamente), eles não o entendem. Todas as respostas vêm com Transfer-Encoding: chunked, portanto o conteúdo não é veiculado compactado. No entanto, executando curlna linha de comando com a --compressedopção, a resposta vem com Content-Type: gzipcabeçalhos Content-Lengthe e é compactada como deveria ser. Em um servidor Windows 2008 R2, o conteúdo é servido como compactado.

Servir o conteúdo compactado funciona bem nesses servidores web Linux, isso é garantido.

Há um proxy pfSense envolvido, mas mesmo que eu o substitua nas configurações de proxy para que o navegador solicite o conteúdo diretamente dos servidores Linux, o comportamento é o mesmo. Nenhuma alteração, com ou sem proxy.

Confirmei o problema com o Firefox e o Chrome com outro PC com Windows 7 de 64 bits. Então, chego à conclusão de que o sistema operacional está de alguma forma envolvido nesse comportamento estranho do navegador.

Alguém pode confirmar...?

Responder1

Isso pode enganar: para enviar o arquivo gzipp'ed em uma mensagem, o servidor precisa ter o arquivo inteiro disponível e saber seu tamanho, o que aparentemente não acontece no seu caso, como você mesmo disse:

executando curl na linha de comando com a --compressedopção, a resposta vem com Content-Type: gzipcabeçalhos Content-Lengthe é compactada como deveria ser.

Eu acho que no seu caso o servidortubosa saída para gzip e, em seguida, canaliza o resultado diretamente para o navegador sem primeiro gravar os dados no disco para calcular o tamanho do arquivo. Sem saber de antemão o tamanho, o servidor não tem escolha a não ser retornar um stream em Transfer-Encoding: chunkedquantas partes estiverem disponíveis.

À medida que os dados ficam disponíveis, eles serão retornados em pedaços, para serem remontados pelo navegador. No entanto, os dados recebidos ainda são compactados, mesmo se recebidos em pedaços.

informação relacionada