Sobre este problema HTML
O atributo http-equiv aceita um conjunto específico de valores predefinidos, e o validador verifica tanto o próprio valor como a sua formatação. Quando o validador reporta um valor inválido de ""Content-Security-Policy"" (note as aspas duplicadas), significa que o valor do atributo real que está a ser analisado inclui caracteres de aspas literais como parte da string. O browser vê a primeira " como abertura do atributo, depois imediatamente vê a segunda " como fecho — resultando numa tag malformada que não funcionará como pretendido.
Isto é importante por várias razões. Content-Security-Policy entregue através de uma tag <meta> é um mecanismo de segurança crítico que restringe quais recursos a sua página pode carregar. Se a tag estiver malformada, o browser irá silenciosamente ignorar a política, deixando o seu site sem as proteções CSP que pretendia. Não há indicação visual de que a política falhou ao aplicar, tornando isto um bug particularmente perigoso.
Causas comuns deste problema incluem:
-
Copiar código de um processador de texto ou CMS que converte aspas direitas (
") em aspas curvas/inteligentes ("e"). - Escaping duplo em templates onde um motor de templates adiciona aspas em torno de um valor que já tem aspas na marcação.
- Erros tipográficos manuais onde as aspas são acidentalmente duplicadas.
Para corrigir isto, abra o seu código HTML fonte num editor de texto simples (não um processador de texto) e certifique-se de que o valor http-equiv está envolvido em exatamente um par de aspas duplas direitas padrão sem caracteres de aspas extra no interior.
Exemplos
Incorreto — aspas duplicadas em torno do valor
<meta http-equiv=""Content-Security-Policy"" content="default-src 'self';">
O validador interpreta isto como um atributo http-equiv com um valor vazio (""), seguido de conteúdo não reconhecido (Content-Security-Policy""), produzindo o erro.
Incorreto — aspas curvas/inteligentes
<meta http-equiv="Content-Security-Policy" content="default-src 'self';">
Aspas inteligentes (" e ") não são delimitadores de atributo válidos em HTML. Tornam-se parte do próprio valor do atributo, fazendo com que o validador o rejeite.
Incorreto — aspas de entidade HTML dentro do atributo
<meta http-equiv=""Content-Security-Policy"" content="default-src 'self';">
Usar " dentro do valor do atributo incorpora caracteres de aspas literais na string do valor, o que a torna inválida.
Correto — um único par de aspas duplas direitas
<meta http-equiv="Content-Security-Policy" content="default-src 'self';">
Correto — exemplo de documento completo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https:; script-src 'self';">
<title>CSP Example</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
O valor http-equiv Content-Security-Policy deve ser escrito exatamente como mostrado — é insensível a maiúsculas/minúsculas segundo a especificação HTML, mas usar a capitalização canónica é recomendado para clareza. As diretivas da política real vão no atributo content, não no http-equiv. Se estiver a usar um motor de templates ou CMS, verifique o código HTML fonte gerado (através de “Ver Código-fonte da Página” no seu browser) para confirmar que a saída contém aspas direitas limpas sem duplicaçã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: