Verificar ETag fraco ou forte
Cole um ETag e saiba na hora se ele é fraco ou forte: W/"abc123" é fraco, com abc123 como etiqueta interna, enquanto "v1-hash" é forte. Aspas ausentes ou um w/ minúsculo são apontados em vez de adivinhados. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- ETag
- W/"abc123"
- Intensidade
- weak
- Tag opaco
- abc123
- Tag entre aspas
- "abc123"
- Prefixo
- W/
Um validador forte afirma correspondência exata byte a byte; um validador fraco, marcado com o prefixo W/ sensível a maiúsculas antes do opaque-tag entre aspas, afirma apenas equivalência semântica. Interpretar mal esse prefixo ou aceitar um token sem aspas leva a decisões erradas em If-Match e If-None-Match, acertos de cache obsoletos e atualizações condicionais perdidas. Esta capacidade aceita um único valor de cabeçalho ETag (ou uma linha completa ETag:), verifica se o opaque-tag está corretamente entre aspas duplas conforme RFC 9110, classifica o validador como fraco ou forte e devolve as partes normalizadas da tag.
O que ETags fracos e fortes significam na RFC 9110
Um entity-tag é uma string opaca entre aspas que um servidor associa a uma representação específica de um recurso. Quando o servidor pretende um validador forte, emite apenas a tag entre aspas, por exemplo "v3-a1b2c3". Quando pretende um validador fraco, prefixa essa tag com o token sensível a maiúsculas W/, de modo que o valor completo fique como W/"v3-a1b2c3".
Validadores fortes podem ser usados tanto para revalidação de cache quanto para decisões seguras de conteúdo parcial ou de intervalos que exigem correspondência exata. Validadores fracos só garantem que as representações são equivalentes para fins de cache; não devem ser tratados como prova de que cada byte é idêntico. Cabeçalhos de requisição condicional como If-Match, If-None-Match e If-Range comparam as tags do cliente com a tag atual do servidor segundo essas regras.
Se um cliente ou middleware remover o prefixo W/ por acidente, uma tag fraca é tratada como forte e pode permitir indevidamente um pedido de intervalo ou uma escrita condicional. Se as aspas forem omitidas, intermediários e parsers discordam sobre onde o token termina. Este verificador existe para que você valide uma string ETag armazenada ou registrada antes de compará-la, documentá-la ou enviá-la a outro sistema que espere a forma estrita da RFC.
Contrato de entrada, campos de resposta e regras de rejeição
Você pode colar o entity-tag puro ou uma linha de cabeçalho completa como ETag: W/"abc". Espaços iniciais e finais são removidos; um prefixo opcional ETag: é removido sem distinguir maiúsculas. O valor restante deve ser "opaque" para um validador forte ou W/"opaque" para um fraco.
O W deve ser maiúsculo; um w/ minúsculo é rejeitado porque a RFC 9110 define o marcador fraco como sensível a maiúsculas. O opaque-tag deve começar e terminar com aspas duplas, não pode conter aspas duplas internas sem escape e só pode usar caracteres etagc: ASCII imprimível exceto aspas, mais obs-text. Exemplo: "v1-hash" produz strong true e strength strong.
Casos de uso
Auditorias de cabeçalhos em CDN e gateways
Cole amostras de ETag de produção e confirme quais respostas usam validadores fracos versus fortes antes de ajustar regras de cache e revalidação.
Suporte e triagem de HAR
Classifique ETags de arquivos HAR ou tickets na ferramenta gratuita do navegador para diagnosticar falhas de requisições condicionais sem scripts sob medida.
Perguntas frequentes
Como saber se um ETag é fraco ou forte?
Envie o valor ETag (por exemplo W/"abc" ou "abc"). Se começar com o prefixo W/ sensível a maiúsculas antes da tag entre aspas, strength é weak; caso contrário, uma tag bem entre aspas é strong.
O que acontece se o ETag não estiver entre aspas?
A RFC 9110 exige que o opaque-tag fique entre aspas duplas; tokens sem aspas são rejeitados em vez de adivinhados.
O prefixo W/ diferencia maiúsculas de minúsculas?
Sim. Apenas W/ maiúsculo é o marcador fraco. Valores como w/"tag" são rejeitados para não tratar em silêncio um prefixo não conforme como forte ou fraco.
Posso colar uma linha de cabeçalho ETag: completa?
Sim. Um nome inicial ETag: é removido sem distinguir maiúsculas; o entity-tag restante é então classificado.
Quando importa se um ETag é fraco ou forte?
Quando um cache ou um cliente compara etiquetas para decidir se algo mudou. Um forte prova uma correspondência exata byte a byte e serve para downloads parciais ou gravações seguras; um fraco só indica que duas versões são equivalentes para o cache.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/web/etag-weak-strong-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"etag":"W/\"abc123\""}'const res = await fetch("https://api.kit.forhosting.com/web/etag-weak-strong-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"etag": "W/\"abc123\""
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/etag-weak-strong-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"etag": "W/\"abc123\""
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/etag-weak-strong-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"etag":"W/\\"abc123\\""}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"etag":"W/\"abc123\""}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/etag-weak-strong-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"etag": "W/\"abc123\""
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.etag_weak_strong_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
timeout_sec | 30 |
max_crawl_pages | 25 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
As entity tags HTTP (ETags) informam caches e clientes se duas representações de um recurso são a mesma. Aspas inválidas, valores vazios e prefixos fracos fora da RFC falham com invalid_input em vez de uma classificação falsa silenciosa. A mesma lógica de parse puro alimenta a ferramenta gratuita do navegador e o caminho API pré-pago.
Contrato de entrada, campos de resposta e regras de rejeição
Envie um corpo JSON com um campo de string obrigatório chamado etag (os aliases value, header, tag e entity_tag são aceitos). Em caso de sucesso a resposta inclui etag (forma normalizada com W/ e aspas, ou só entre aspas), booleanos weak e strong, strength como a string weak ou strong, opaque_tag (conteúdo interno sem aspas), quoted_tag, prefix (vazio ou W/), valid true e uma nota breve sobre a classe do validador. Entrada ausente, strings vazias após remover o nome do cabeçalho, tags sem aspas como abc123, aspas desalinhadas, caracteres ilegais e prefixos fracos incorretos geram invalid_input e não são cobrados. Exemplo: W/"abc123" produz weak true, strength weak, opaque_tag abc123.
Onde um verificador de força de ETag faz diferença
Validação falha não consome saldo. Revisões de configuração de gateways de API e CDN costumam reunir cabeçalhos de resposta de amostra e precisam de uma resposta rápida e determinística sobre se cada ETag é fraco ou forte antes de escrever políticas de cache. Testes automatizados de contrato para serviços REST podem afirmar que documentos JSON versionados emitem tags fortes enquanto páginas HTML renderizadas usam deliberadamente tags fracas, falhando o build quando as aspas ou o prefixo W/ divergem. Sites de conteúdo voltados a consultas como validador etag fraco forte ganham uma ferramenta ao vivo cujo caminho gratuito do cliente coincide com o caminho API pago no mesmo módulo puro. Como a implementação é parse puro de nível A, cada chamada bem-sucedida custa o preço base publicado US$ 0,002 sem tokens de modelo e sem rede de saída. Mantenha o opaque-tag opaco na documentação do produto: este endpoint nunca calcula o hash do seu corpo por você; apenas classifica o formato da tag que você já tem, e fixe os goldens ao incorporar o verificador no CI.
Casos de integração
Contratos de API e checagens de CI
Afirme nos testes que um serviço emite ETags fortes ou fracos corretamente entre aspas e que o pipeline falha se faltarem aspas ou o prefixo W/ estiver errado.
Perguntas técnicas
Quanto custa a verificação de ETag fraco ou forte?
A ferramenta do navegador é gratuita. Requisições API usam saldo KIT pré-pago a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.