Sobre este problema HTML
O atributo http-equiv num elemento <meta> simula um cabeçalho de resposta HTTP, permitindo-lhe definir metadados a nível do documento que, de outra forma, exigiriam configuração do servidor. Como estes metadados se aplicam a todo o documento e devem ser processados antes do conteúdo da página ser renderizado, a especificação HTML exige que os elementos <meta http-equiv> apareçam dentro do elemento <head>. Colocá-los no <body> é inválido e pode fazer com que os navegadores os ignorem completamente, levando a comportamentos inesperados como codificação de caracteres incorreta, políticas de segurança de conteúdo quebradas, ou diretivas de atualização em falta.
Este erro ocorre comumente quando:
-
Uma tag
<meta http-equiv>é acidentalmente colocada dentro do<body>. -
O conteúdo é copiado e colado de um documento para o corpo de outro, trazendo consigo as tags
<meta>. -
Um sistema de templates ou CMS injeta tags
<meta>na localização errada.
Valores comuns de http-equiv
O atributo http-equiv suporta vários valores padrão:
-
content-type— Declara o tipo MIME do documento e a codificação de caracteres. Em HTML5, a forma abreviada<meta charset="UTF-8">é preferida. -
refresh— Instrui o navegador a recarregar a página ou redirecionar após um número especificado de segundos. Note que a atualização automática é desencorajada por razões de acessibilidade: pode desorientar utilizadores, mover o foco de volta ao topo da página, e perturbar tecnologias assistivas. Evite-a a menos que seja absolutamente necessária. -
content-security-policy— Define uma Política de Segurança de Conteúdo para o documento, ajudando a prevenir ataques de cross-site scripting (XSS) e outras injeções de código. -
default-style— Especifica a folha de estilo preferida de um conjunto de folhas de estilo alternativas.
Como corrigir
Encontre todos os elementos <meta http-equiv> no seu documento e certifique-se de que estão colocados dentro do elemento <head>, antes de qualquer conteúdo no <body>. Se a tag estiver duplicada ou for desnecessária, remova-a.
Exemplos
❌ Incorreto: http-equiv dentro do <body>
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
</head>
<body>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<p>Hello, world!</p>
</body>
</html>
A tag <meta http-equiv> está dentro do <body>, o que desencadeia o erro de validação.
✅ Correto: http-equiv dentro do <head>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>My Page</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
✅ Correto: usando a forma abreviada charset do HTML5
Em HTML5, você pode substituir <meta http-equiv="content-type" content="text/html; charset=UTF-8"> pelo atributo charset mais simples:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My Page</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
✅ Correto: Content Security Policy no <head>
<head>
<meta charset="UTF-8">
<meta http-equiv="content-security-policy" content="default-src 'self'">
<title>Secure Page</title>
</head>
O valor content-security-policy é particularmente sensível à colocação — os navegadores ignorá-lo-ão se aparecer fora do <head>, deixando a sua página sem as proteções de segurança pretendidas.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.