Sobre este problema HTML
O código de estado HTTP 429 está definido na RFC 6585 e sinaliza que um cliente enviou demasiados pedidos num determinado período de tempo. Quando o Validador W3C encontra o seu HTML, não apenas analisa a marcação — também tenta recuperar recursos vinculados como folhas de estilos, scripts e imagens para realizar validação completa. Se algum desses recursos estiver alojado num servidor que aplica limites de taxa (o que é comum com CDNs, fornecedores de API e plataformas de alojamento populares), o servidor pode rejeitar o pedido do validador com uma resposta 429.
Isto não é um erro de sintaxe no seu HTML. A sua marcação pode estar perfeitamente válida. O problema é ambiental: o servidor remoto está temporariamente a recusar ligações do validador. No entanto, porque o validador não consegue recuperar o recurso, não pode verificar completamente tudo sobre a sua página, por isso sinaliza o problema.
Causas comuns
- Validação repetida rápida: Executar o validador muitas vezes em sucessão rápida contra páginas que referenciam os mesmos recursos externos.
- Limites de taxa partilhados: O serviço Validador W3C partilha endereços IP de saída, pelo que os pedidos de validação de outros utilizadores podem contar para o mesmo limite de taxa no servidor remoto.
- Limitação de taxa agressiva do lado do servidor: O servidor remoto ou a sua CDN (por exemplo, Cloudflare, AWS CloudFront) tem regras rigorosas de limitação de taxa que bloqueiam clientes HTTP automatizados rapidamente.
- Muitos recursos externos: Uma página que referencia numerosos recursos do mesmo anfitrião externo pode desencadear limites de taxa numa única passagem de validação.
Como corrigir
Espere e tente novamente
Como o 429 é uma condição temporária, simplesmente esperar alguns minutos e revalidar é frequentemente suficiente. Alguns servidores incluem um cabeçalho Retry-After na resposta 429 indicando quanto tempo esperar, embora o validador possa não mostrar este detalhe.
Reduza a frequência de validação
Se está a executar validação automatizada (por exemplo, num pipeline CI/CD), espaçe os seus pedidos. Evite validar dezenas de páginas em sucessão rápida.
Aloje recursos localmente
Se controla o site, considere alojar recursos críticos autonomamente em vez de depender de CDNs de terceiros. Isto dá-lhe controlo total sobre a disponibilidade e elimina problemas de limite de taxa de terceiros durante a validação.
Ajuste os limites de taxa do servidor
Se é proprietário do servidor que está a devolver 429, reveja a sua configuração de limitação de taxa. Pode querer incluir na lista branca o agente de utilizador ou intervalo de IP do Validador W3C, ou relaxar limites que são excessivamente agressivos para ferramentas automatizadas legítimas.
Exemplos
Página que pode desencadear o problema
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My Page</title>
<link rel="stylesheet" href="https://cdn.example.com/styles/main.css">
<script src="https://cdn.example.com/scripts/app.js"></script>
</head>
<body>
<h1>Hello, world!</h1>
</body>
</html>
Se cdn.example.com limitar a taxa do validador, tanto a obtenção da folha de estilos como do script podem falhar com um 429, produzindo duas mensagens “Recurso HTTP não recuperável”.
Correção: alojar autonomamente os recursos
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My Page</title>
<link rel="stylesheet" href="/css/main.css">
<script src="/js/app.js"></script>
</head>
<body>
<h1>Hello, world!</h1>
</body>
</html>
Ao servir main.css e app.js do seu próprio domínio, elimina a dependência dos limites de taxa de um servidor de terceiros durante a validação.
Correção: reduza as dependências externas
Se o alojamento autónomo não for viável, minimize o número de recursos externos de um único anfitrião para diminuir a hipótese de atingir limites de taxa:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My Page</title>
<link rel="stylesheet" href="https://cdn.example.com/bundle.css">
</head>
<body>
<h1>Hello, world!</h1>
<script src="https://cdn.example.com/bundle.js"></script>
</body>
</html>
Agrupar múltiplos ficheiros em recursos únicos reduz o número total de pedidos que o validador precisa de fazer ao servidor externo, tornando os erros de limite de taxa menos prováveis.
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: