ETag eller entity-tagg är en av tjänstehuvudena i HTTP/1.1 -protokollet som regleras av RFC 7232- specifikationen , som kan ställas in av en webbserver i fasen för att generera ett svar på en begäran från en klient . Innehållet i ETag-huvudet är en identifierare vars värde direkt beror på tillståndet för resursen som laddas av klienten . I framtiden kommer denna identifierare att användas för att uppdatera tillståndet för den nedladdade resursen till dess original, som finns på webbservern . Detta uppnås genom att skicka en begäran till HTTP/1.1 -servern som anger ETag-identifieraren som rubrikvärde - If-None-Match . Servern, efter att ha hittat en sådan rubrik, baserat på en jämförelse av dess värde med resursens nuvarande tillstånd, informerar klienten om att kopian som lagras i klientens cache är uppdaterad, dvs. det finns inget behov av att ladda ner igen, eller annars behöver du ladda ner den senaste versionen.
En ETag är en privat identifierare som tilldelas av en webbserver till en specifik version av en resurs som finns i en URL. Om innehållet i resursen för denna adress ändras till en ny, tilldelas en ny ETag. Att använda ETags på det här sättet liknar att använda fingeravtryck, du kan snabbt jämföra och avgöra om två versioner av en resurs är samma eller inte. Att jämföra ETaggar är bara meningsfullt med Etags från samma URL , ID:n som erhållits från olika URL:er kan vara lika eller inte, oavsett resurser, så att jämföra dem är inte meningsfullt.
Användningen av ETags i en HTTP -rubrik är valfri (liksom vissa andra HTTP 1.1-rubrikfält). Metoden med vilken ETags genereras specificerades aldrig i HTTP-specifikationen.
Vanliga metoder för att skapa en ETag inkluderar att använda en kollisionsbeständig hashfunktion av resursens innehåll, en hash för den senaste ändringstiden eller till och med bara ett versionsnummer.
För att undvika att använda inaktuella cachedata bör metoderna som används för att generera ETags säkerställa (så långt det är praktiskt möjligt) att varje ETag är unik. En funktion för att skapa Etag kan dock anses vara "användbar" om det kan bevisas (matematiskt) att skapandet av identiska ET-taggar är "acceptabelt sällsynt", även om det kan eller kommer att inträffa.
Vissa tidiga kontrollfunktioner, såsom CRC32 och CRC64, är kända för att lida av detta kollisionsproblem . Av denna anledning är de inte bra kandidater för användning i ETag-generering.
ETag-mekanismen stöder både starka och svaga kontroller. De kännetecknas av närvaron av en ledande W/ETag-identifierare, t.ex. "123456789"(stark ETag-kontroll), W/"123456789"(svag ETag-kontroll).
En stark ETag-kontroll kontrollerar att innehållet i båda resurserna är identiskt byte-för-byte, och att alla andra fält (som Content-Language) är desamma. Starka ETaggar gör att partiella svar kan cachelagras och sammanställas, som med byteintervallförfrågningar.
En svag ETag-kontroll kontrollerar bara att två resurser är semantiskt likvärdiga, vilket innebär att de för praktiska ändamål är utbytbara och att cachade kopior kan användas. Dessa resurser är dock inte nödvändigtvis identiska byte för byte, så svaga ETaggar är inte lämpliga för byteintervallförfrågningar. Svaga ET-taggar kan vara användbara i fall där starka ET-taggar är opraktiska att genereras av en webbserver, till exempel i fall med dynamiskt genererat innehåll.
Vid normal användning, när en URL hämtas, returnerar webbservern resursen tillsammans med motsvarande ETag-värde, som finns i HTTP-fältet ETag:
ETag: "686897696a7c876b7e"
Klienten kan sedan cachelagra resursen tillsammans med dess ETag. Senare, om klienten vill ha en sida från samma adress, kommer den att skicka en tidigare sparad ETag-kopia av den tillsammans med begäran i If-None-Match.
If-None-Match: "686897696a7c876b7e"
På denna efterföljande begäran kan servern nu jämföra klientens ETag med ETag för den aktuella versionen av resursen. Om ETag-värdena matchar, vilket betyder att resursen inte har ändrats, kan servern skicka tillbaka ett mycket kort svar med HTTP-statusen 304 Ej ändrad . Status 304 talar om för klienten att dess cacheversion fortfarande är uppdaterad och att den bör använda den.
Men om ETag-värdena inte matchar, vilket betyder att resursen sannolikt har ändrats, returneras hela svaret, inklusive innehållet i resursen, som om ETag inte hade använts. I det här fallet kan klienten besluta att ersätta resursversionen i cachen med den nyligen returnerade versionen och den nya ETag.
ETag kan användas på webbsidor för ändringsövervakning och aviseringar. Effektiv övervakning av webbsidor hämmas av det faktum att de flesta webbplatser inte ställer in Etag-huvudena på webbsidor. När webbmonitorn inte har någon aning om huruvida webbinnehållet har ändrats måste allt innehåll hämtas och analyseras med hjälp av datorresurserna från både utgivaren av innehållet och den som vill se det.
ETags kan användas för att spåra unika användare [1] eftersom HTTP-cookies kan raderas av integritetssökande användare. I juli 2011 rapporterade Ashkan Soltani och ett team av forskare vid UC Berkeley att ett antal webbplatser, inklusive Hulu.com, använde ETag för att spåra sådana mål [2] . Hulu och KISSmetrics har slutat göra detta från och med den 29 juli 2011 [3] eftersom KISSmetrics och över 20 av dess kunder står inför en grupptalan för användningen av "oborttagbara" spårningscookies, delvis relaterat till användningen av ETag [4] .
http | |
---|---|
Allmänna begrepp |
|
Metoder | |
Titlar |
|
Statuskoder |