Sobre este problema HTML
Um código de estado HTTP 202 Accepted indica que o servidor recebeu e reconheceu o pedido, mas o processamento ainda não está completo. Isto é comumente usado para operações assíncronas — o servidor coloca o trabalho numa fila e responde imediatamente para informar o cliente que o pedido foi aceite sem fazer com que o cliente espere. Embora isto seja perfeitamente válido para APIs e sistemas de trabalhos em segundo plano, não é apropriado para servir documentos HTML, folhas de estilo, scripts ou outros recursos que o navegador (ou validador) precisa de ler imediatamente.
O W3C HTML Validator funciona obtendo a sua página e quaisquer recursos ligados (ficheiros CSS, imagens, scripts, etc.) através de HTTP. Espera uma resposta 200 OK com o conteúdo completo no corpo da resposta. Quando recebe um 202 Accepted, o corpo pode estar vazio, incompleto ou conter um marcador de posição — nenhum dos quais pode ser validado de forma significativa. Isto resulta no validador abortar a sua verificação para esse recurso e reportar o erro.
Causas comuns
-
Atrasos no processamento do lado do servidor: O seu servidor web ou framework da aplicação está a adiar a geração de conteúdo para um processo em segundo plano e a retornar
202como resposta interina. - Endpoints assíncronos ou em fila: O URL aponta para um endpoint do estilo API que desencadeia um trabalho em vez de servir conteúdo diretamente.
-
Configuração incorreta de CDN ou proxy: Uma rede de entrega de conteúdo ou proxy reverso à frente do seu servidor está a retornar
202enquanto obtém ou gera o recurso da origem. -
Geração de site estático sob demanda: Algumas plataformas geram páginas no primeiro pedido e retornam
202até que a construção esteja completa (por exemplo, regeneração estática incremental que ainda não colocou a página em cache).
Como corrigir
A correção principal é garantir que o URL que você submete ao validador responde com um estado 200 OK e entrega o conteúdo completo do recurso no corpo da resposta. Aqui estão os passos específicos:
-
Verifique a configuração do seu servidor. Certifique-se de que o seu servidor web ou aplicação retorna
200 OKpara páginas HTML e recursos estáticos. Se o processamento em segundo plano for necessário, deve acontecer antes da resposta ser enviada, ou o resultado deve ser colocado em cache e servido diretamente em pedidos subsequentes. -
Evite validar endpoints assíncronos. Se um URL foi projetado para desencadear trabalho em segundo plano (como um webhook ou fila de tarefas), não é um recurso HTML validável. Apenas submeta URLs que servem documentos HTML completos.
-
Pré-aqueça conteúdo em cache. Se a sua plataforma de hospedagem usa geração sob demanda, visite o URL num navegador primeiro para desencadear a construção, depois valide-o quando a página estiver totalmente gerada e em cache.
-
Inspecione os cabeçalhos de resposta. Use as ferramentas de programador do navegador ou uma ferramenta de linha de comandos como
curl -I <url>para verificar o código de estado que o seu servidor realmente retorna. Procure pela linhaHTTP/1.1 202 Acceptede trace por que está a ser enviada.
Exemplos
Comportamento incorreto do servidor (retorna 202)
Neste exemplo conceptual, o servidor responde com 202 para uma página HTML, o que impede o validador de a verificar:
HTTP/1.1 202 Accepted
Content-Type: text/html
<!-- O conteúdo pode estar vazio ou incompleto -->
Se estiver a usar um servidor Node.js/Express, este tipo de código causaria o problema:
app.get('/page', (req, res) => {
res.status(202).send('<p>Processing...</p>');
// O trabalho em segundo plano acontece mais tarde
});
Comportamento correto do servidor (retorna 200)
O servidor deve responder com 200 OK e o conteúdo HTML completo:
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
</head>
<body>
<h1>Welcome</h1>
<p>This page is fully rendered and ready to validate.</p>
</body>
</html>
A correção equivalente num servidor Node.js/Express:
app.get('/page', (req, res) => {
const html = renderPage(); // Gerar conteúdo completo sincronamente ou aguardá-lo
res.status(200).send(html);
});
Verificar o código de estado com curl
Você pode verificar que código de estado um URL retorna antes de o submeter ao validador:
curl -I https://example.com/page
Procure por HTTP/1.1 200 OK (ou HTTP/2 200) na primeira linha da saída. Se vir 202 Accepted, investigue a configuração do seu servidor antes de tentar a validação.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.
Saiba mais: