O erro ERR_CONTENT_DECODING_FAILED (às vezes exibido como Erro 330 em versões mais antigas do Chrome) aparece quando o Google Chrome não consegue decodificar o conteúdo recebido de um servidor web. Isso geralmente significa que os cabeçalhos de resposta HTTP do servidor indicam que o conteúdo está comprimido (geralmente com gzip), mas o corpo real da resposta não está comprimido, está comprimido de forma diferente ou está corrompido. Este artigo explica as causas raiz, como diagnosticar o problema e como corrigi-lo em diferentes plataformas de servidor web.
Entendendo o erro
Quando um navegador envia uma solicitação a um servidor web, ele inclui um cabeçalho Accept-Encoding indicando quais métodos de compressão ele suporta:
Accept-Encoding: gzip, deflate, br
Se o servidor decide comprimir a resposta, ele inclui um cabeçalho Content-Encoding na resposta:
Content-Encoding: gzip
O navegador então espera descomprimir o corpo da resposta usando o algoritmo especificado. ERR_CONTENT_DECODING_FAILED ocorre quando há uma incompatibilidade — o cabeçalho diz gzip mas o corpo não é dados gzip válidos.
Causas comuns
Dupla compressão (a mais comum)
Esta é a causa mais frequente, especialmente com plataformas CMS como WordPress. Acontece quando:
- Um plugin de cache ou otimização do WordPress habilita compressão gzip no nível da aplicação
- O servidor web (IIS, Nginx, Apache) também está configurado para comprimir respostas
- O servidor comprime o conteúdo já comprimido, produzindo dados gzip inválidos
- O Chrome recebe os dados duplamente comprimidos e não consegue decodificá-los
Interferência de proxy ou CDN
Um proxy reverso ou CDN entre o cliente e o servidor de origem pode:
- Remover o conteúdo comprimido mas deixar o cabeçalho
Content-Encoding: gzipintacto - Recomprimir uma resposta já comprimida
- Armazenar em cache uma resposta comprimida e servi-la com cabeçalhos incorretos
Resposta corrompida
Problemas de rede, respostas truncadas ou erros do lado do servidor podem produzir uma resposta onde o cabeçalho Content-Encoding está definido mas o corpo está incompleto ou corrompido.
Software antivírus ou de segurança
Software antivírus de desktop que inspeciona o tráfego HTTPS pode às vezes modificar os corpos das respostas sem atualizar os cabeçalhos de codificação de conteúdo, fazendo com que o navegador falhe na decodificação.
Diagnosticando o problema
Usando as Ferramentas de Desenvolvedor do Chrome
- Pressione
F12para abrir as Ferramentas de Desenvolvedor do Chrome - Vá para a aba Rede
- Recarregue a página que produz o erro
- Clique na solicitação que falhou
- Examine os Cabeçalhos de Resposta:
- Procure por
Content-Encoding: gzip - Verifique
Transfer-Encoding
- Procure por
- Clique na aba Resposta — se a resposta estiver ilegível ou vazia, a codificação está errada
Usando curl pela linha de comando
# Request with gzip encoding and see response headers
curl -H "Accept-Encoding: gzip" -I https://example.com
# Download the response and check if it is valid gzip
curl -H "Accept-Encoding: gzip" -o response.gz https://example.com
file response.gz # Should report "gzip compressed data"
gunzip response.gz # Should decompress without errors
# Request without compression to see if the page works
curl --compressed -v https://example.com
Verificando com um navegador diferente
Se a página carrega no Firefox ou Edge mas não no Chrome, o problema pode estar relacionado ao cache do Chrome ou a uma extensão específica do Chrome. Se falha em todos os navegadores, o problema é do lado do servidor.
Corrigindo o problema no IIS
Desativar a dupla compressão
Se um plugin do WordPress ou a aplicação PHP gerencia a compressão, desative a compressão dinâmica do IIS:
Usando o Gerenciador do IIS:
- Abra o Gerenciador do IIS
- Selecione o site ou o nó do servidor
- Clique duas vezes em Compressão
- Desmarque Habilitar compressão de conteúdo dinâmico
- Clique em Aplicar
Usando web.config:
<configuration>
<system.webServer>
<urlCompression doStaticCompression="true"
doDynamicCompression="false" />
</system.webServer>
</configuration>
Ou deixe o IIS gerenciar toda a compressão
Alternativamente, desative a compressão na aplicação e deixe o IIS gerenciá-la:
- Desative o gzip nos plugins do WordPress (W3 Total Cache, WP Super Cache, etc.)
- Habilite tanto a compressão estática quanto dinâmica no IIS:
<configuration>
<system.webServer>
<urlCompression doStaticCompression="true"
doDynamicCompression="true" />
<httpCompression>
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="application/json" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
</system.webServer>
</configuration>
Corrigindo o problema no Nginx
Verificar a configuração do gzip
Verifique sua configuração do Nginx para configurações corretas de gzip:
http {
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_min_length 1000;
gzip_types
text/plain
text/css
text/xml
text/javascript
application/json
application/javascript
application/xml
application/xml+rss
application/x-javascript
image/svg+xml;
}
Evitar comprimir conteúdo já comprimido
Se sua aplicação (PHP, Node.js) envia respostas pré-comprimidas, diga ao Nginx para não comprimi-las novamente:
location ~ \.php$ {
# Pass through without additional compression
gzip off;
proxy_pass http://backend;
}
Ou use gzip_proxied para controlar quando o Nginx comprime respostas do proxy:
# Only compress if the backend did not already compress
gzip_proxied no-cache no-store private expired auth;
Corrigindo o problema no Apache
Verificar configuração conflitante do mod_deflate
# In .htaccess or httpd.conf
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilterByType DEFLATE text/css text/javascript
AddOutputFilterByType DEFLATE application/json application/javascript
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml
# Do not compress images or already-compressed files
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|gz|zip|bz2)$ no-gzip
</IfModule>
Se um plugin PHP também está comprimindo a saída, desative o mod_deflate ou desative a compressão do plugin.
Soluções específicas para WordPress
Como este erro ocorre frequentemente com instalações WordPress, aqui estão soluções direcionadas:
W3 Total Cache
- Vá para Desempenho > Cache do Navegador
- Em Compressão HTTP, desmarque Habilitar compressão HTTP (gzip)
- Salve as configurações
- Deixe o servidor web gerenciar a compressão em vez disso
WP Super Cache
- Vá para Configurações > WP Super Cache > Avançado
- Desmarque Comprimir páginas para que sejam servidas mais rapidamente aos visitantes
- Salve as configurações
Ajuste no wp-config.php
Você pode adicionar isso ao wp-config.php para evitar que o WordPress envie saída comprimida:
// Disable WordPress gzip output
@ini_set('zlib.output_compression', 'Off');
Solução de problemas do lado do cliente
Se você está experimentando este erro como usuário (não como administrador do servidor):
Limpar o cache do navegador
- Pressione
Ctrl+Shift+Deleteno Chrome - Selecione Imagens e arquivos em cache
- Defina o intervalo de tempo para Todo o período
- Clique em Limpar dados
Desativar extensões do navegador
Algumas extensões (bloqueadores de anúncios, ferramentas de privacidade) podem interferir no tratamento de respostas:
- Abra
chrome://extensions/ - Desative todas as extensões
- Recarregue a página que falha
- Se funcionar, reative as extensões uma por uma para encontrar a culpada
Verificar a verificação HTTPS do antivírus
Se seu antivírus verifica o tráfego HTTPS, tente desativar temporariamente essa funcionalidade para ver se resolve o erro.
Limpar o cache DNS
ipconfig /flushdns
No macOS:
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
Resumo
O erro ERR_CONTENT_DECODING_FAILED no Chrome é causado por uma incompatibilidade entre o cabeçalho Content-Encoding e o corpo real da resposta. A causa mais comum é a dupla compressão, onde tanto um plugin do CMS quanto o servidor web tentam comprimir a resposta com gzip. A correção é simples: garanta que apenas uma camada gerencie a compressão. Use as Ferramentas de Desenvolvedor do Chrome e curl para diagnosticar qual camada está causando o conflito, depois ajuste a configuração do IIS, Nginx ou Apache conforme apropriado. Para WordPress especificamente, desative a compressão nos plugins de cache e deixe o servidor web gerenciá-la.