Skip to main content
Validação HTML

Valor inválido “Pragma” para o atributo “http-equiv” no elemento “meta”.

Sobre este problema HTML

O cabeçalho HTTP Pragma é um remanescente do HTTP/1.0, originalmente usado para instruir proxies e navegadores a não fazer cache de uma resposta. Em especificações HTML mais antigas, os programadores às vezes colocavam <meta http-equiv="Pragma" content="no-cache"> nos seus documentos, esperando que os navegadores o tratassem como um cabeçalho HTTP real. No entanto, o padrão HTML atual (mantido pelo WHATWG) restringe o atributo http-equiv a um pequeno conjunto de valores reconhecidos: content-type, default-style, refresh, x-ua-compatible e content-security-policy. O valor Pragma não está entre eles, razão pela qual o validador W3C o sinaliza como inválido.

Além do erro de validação, esta abordagem sempre foi pouco confiável. Os navegadores e proxies de cache geralmente ignoram tags meta http-equiv para fins de controlo de cache — dependem de cabeçalhos HTTP de resposta reais enviados pelo servidor. Manter esta tag inválida no seu HTML proporciona uma falsa sensação de segurança sem produzir qualquer benefício real de cache.

Por que isto é um problema

  • Conformidade com padrões: Usar um valor http-equiv não reconhecido produz HTML inválido que falha na validação W3C.
  • Nenhum efeito prático: A maioria dos navegadores e todos os proxies intermediários (CDNs, proxies reversos) ignoram diretivas de cache incorporadas em tags <meta>. Apenas cabeçalhos HTTP reais controlam de forma confiável o comportamento do cache.
  • Código enganador: Os programadores que fazem manutenção do código podem assumir que o cache está adequadamente gerido no HTML quando não está, levando a problemas inesperados de cache em produção.

Como corrigir

  1. Remova a tag <meta> inválida do <head> do seu HTML.
  2. Configure o cache através de cabeçalhos HTTP de resposta no seu servidor. Defina Cache-Control (e opcionalmente Pragma para compatibilidade com HTTP/1.0) como cabeçalhos reais na configuração do seu servidor ou código da aplicação.

Por exemplo, num ficheiro .htaccess do Apache:

Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"

Ou numa configuração Nginx:

add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";

Estes cabeçalhos do lado do servidor são a forma correta e eficaz de gerir o cache.

Exemplos

Incorreto: usar Pragma em http-equiv

Isto desencadeia o erro de validação:

<head>
  <meta charset="utf-8">
  <meta http-equiv="Pragma" content="no-cache">
  <title>My Page</title>
</head>

Incorreto: usar Cache-Control em http-equiv

Embora Cache-Control também seja às vezes visto em tags <meta>, não é um valor http-equiv válido no padrão HTML, e os navegadores largamente o ignoram:

<head>
  <meta charset="utf-8">
  <meta http-equiv="Cache-Control" content="no-cache">
  <title>My Page</title>
</head>

Correto: remover a tag inválida e usar cabeçalhos do servidor

Simplesmente remova a tag meta de cache. O seu HTML fica limpo e válido:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>My Page</title>
  </head>
  <body>
    <p>Cache control is handled by server-side HTTP headers.</p>
  </body>
</html>

Depois configure o seu servidor web para enviar os cabeçalhos HTTP de resposta Cache-Control e Pragma apropriados, conforme mostrado nos exemplos de configuração do servidor acima. Esta é a única forma confiável de controlar como os navegadores e proxies fazem cache das suas páginas.

Encontre problemas como este automaticamente

O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

Pronto para validar os seus sites?
Comece o seu teste gratuito hoje.