Controllare ETag debole o forte
Incolli un ETag e scopra subito se è debole o forte: W/"abc123" è debole, con abc123 come etichetta interna, mentre "v1-hash" è forte. Virgolette mancanti o una w/ minuscola vengono segnalate invece che indovinate. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- ETag
- W/"abc123"
- Intensità
- weak
- Tag opaco
- abc123
- Tag tra virgolette
- "abc123"
- Prefisso
- W/
Un validatore forte afferma una corrispondenza esatta byte per byte; un validatore debole, contrassegnato dal prefisso W/ sensibile alle maiuscole prima dell'opaque-tag tra virgolette, afferma solo equivalenza semantica. Interpretare male quel prefisso o accettare un token non quotato porta a decisioni errate su If-Match e If-None-Match, hit di cache obsoleti e aggiornamenti condizionali persi. Questa capacità accetta un singolo valore di intestazione ETag (o una riga ETag: completa), verifica che l'opaque-tag sia correttamente racchiuso tra virgolette doppie secondo RFC 9110, classifica il validatore come debole o forte e restituisce le parti normalizzate del tag.
Cosa significano gli ETag deboli e forti secondo RFC 9110
Un entity-tag è una stringa opaca tra virgolette che un server associa a una rappresentazione specifica di una risorsa. Quando il server intende un validatore forte, emette solo il tag tra virgolette, ad esempio "v3-a1b2c3". Quando intende un validatore debole, antepone a quel tag il token sensibile alle maiuscole W/, così il valore completo risulta W/"v3-a1b2c3".
I validatori forti possono essere usati sia per la rivalidazione della cache sia per decisioni sicure su contenuto parziale o intervalli che richiedono una corrispondenza esatta. I validatori deboli garantiscono solo che le rappresentazioni siano equivalenti a fini di cache; non devono essere trattati come prova che ogni byte sia identico. Intestazioni di richiesta condizionale come If-Match, If-None-Match e If-Range confrontano i tag forniti dal client con il tag corrente del server secondo queste regole.
Se un client o un middleware rimuove per errore il prefisso W/, un tag debole viene trattato come forte e può consentire indebitamente una richiesta di intervallo o una scrittura condizionale. Se le virgolette vengono omesse, intermediari e parser non concordano su dove termini il token. Questo verificatore esiste affinché Lei possa validare una stringa ETag memorizzata o registrata prima di confrontarla, documentarla o inserirla in un altro sistema che si aspetta la forma rigorosa della RFC.
Contratto di ingresso, campi di risposta e regole di rifiuto
Può incollare l'entity-tag nudo o una riga di intestazione completa come ETag: W/"abc". Gli spazi iniziali e finali vengono rimossi; un prefisso opzionale ETag: viene eliminato senza distinzione di maiuscole. Il valore restante deve essere "opaque" per un validatore forte o W/"opaque" per uno debole.
La W deve essere maiuscola; una w/ minuscola viene rifiutata perché RFC 9110 definisce il marcatore debole come sensibile alle maiuscole. L'opaque-tag deve iniziare e terminare con virgolette doppie, non deve contenere virgolette doppie interne non escaped e può usare solo caratteri etagc: ASCII stampabile eccetto virgolette, più obs-text. Esempio: "v1-hash" produce strong true e strength strong.
Casi d'uso
Audit di intestazioni CDN e gateway
Incolli campioni di ETag di produzione e confermi quali risposte usano validatori deboli rispetto a forti prima di regolare regole di cache e rivalidazione.
Supporto e triage HAR
Classifichi ETag da file HAR o ticket nello strumento gratuito del browser per diagnosticare bug di richieste condizionali senza script personalizzati.
Domande frequenti
Come si capisce se un ETag è debole o forte?
Invii il valore ETag (ad esempio W/"abc" o "abc"). Se inizia con il prefisso W/ sensibile alle maiuscole prima del tag tra virgolette, strength è weak; altrimenti un tag correttamente quotato è strong.
Cosa succede se l'ETag non è tra virgolette?
RFC 9110 richiede che l'opaque-tag sia racchiuso tra virgolette doppie; i token non quotati vengono rifiutati anziché indovinati.
Il prefisso W/ distingue maiuscole e minuscole?
Sì. Solo W/ maiuscolo è il marcatore debole. Valori come w/"tag" vengono rifiutati per non trattare in silenzio un prefisso non conforme come forte o debole.
Si può incollare una riga di intestazione ETag: completa?
Sì. Un nome iniziale ETag: viene rimosso senza distinzione di maiuscole; l'entity-tag restante viene quindi classificato.
Quando conta se un ETag è debole o forte?
Quando una cache o un client confronta i tag per capire se qualcosa è cambiato. Uno forte garantisce una corrispondenza esatta byte per byte e vale per download parziali o scritture sicure; uno debole indica solo che due versioni sono equivalenti per la cache.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
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)Esempio di richiesta
{
"etag": "W/\"abc123\""
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.etag_weak_strong_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
timeout_sec | 30 |
max_crawl_pages | 25 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Le entity tag HTTP (ETags) comunicano a cache e client se due rappresentazioni di una risorsa sono uguali. Virgolette non valide, valori vuoti e prefissi deboli non conformi alla RFC falliscono con invalid_input invece di una falsa classificazione silenziosa. La stessa logica di parse puro alimenta lo strumento gratuito del browser e il percorso API prepagato.
Contratto di ingresso, campi di risposta e regole di rifiuto
Invii un corpo JSON con un campo stringa obbligatorio denominato etag (sono accettati gli alias value, header, tag e entity_tag). In caso di successo la risposta include etag (forma normalizzata con W/ e virgolette, o solo tra virgolette), booleani weak e strong, strength come stringa weak o strong, opaque_tag (contenuto interno senza virgolette), quoted_tag, prefix (vuoto o W/), valid true e una breve nota sulla classe del validatore. Ingresso assente, stringhe vuote dopo la rimozione del nome intestazione, tag non quotati come abc123, virgolette non abbinate, caratteri illegali e prefissi deboli errati sollevano invalid_input e non vengono fatturati. Esempio: W/"abc123" produce weak true, strength weak, opaque_tag abc123.
Dove un verificatore di forza ETag ha senso
La validazione fallita non consuma saldo. Le revisioni di configurazione di gateway API e CDN raccolgono spesso campioni di intestazioni di risposta e necessitano di una risposta rapida e deterministica sul fatto che ogni ETag sia debole o forte prima di scrivere politiche di cache. Test automatizzati di contratto per servizi REST possono affermare che documenti JSON versionati emettono tag forti mentre pagine HTML rese usano deliberatamente tag deboli, facendo fallire la build quando virgolette o prefisso W/ divergono. I siti di contenuti che mirano a query come validatore etag debole forte ottengono uno strumento live il cui percorso client gratuito coincide con il percorso API a pagamento sullo stesso modulo puro. Poiché l'implementazione è parse puro di livello A, ogni chiamata riuscita costa il prezzo base pubblicato $0.002 senza token di modello e senza rete in uscita. Mantenga l'opaque-tag opaco nella documentazione di prodotto: questo endpoint non calcola mai l'hash del Suo corpo al posto Suo; classifica solo il formato del tag che Lei ha già, e fissi i goldens quando incorpora il verificatore in CI.
Casi di integrazione
Contratti API e controlli CI
Affermi nei test che un servizio emette ETag forti o deboli correttamente tra virgolette e che la pipeline fallisca se mancano virgolette o il prefisso W/ è errato.
Domande tecniche
Quanto costa la verifica ETag debole o forte?
Lo strumento browser è gratuito. Le richieste API usano il saldo KIT prepagato a $0.002 per chiamata riuscita; l'ingresso non valido non viene fatturato.