HTTP ETag

ETag tai entiteettitunniste  on yksi RFC 7232 -spesifikaatiolla säädellyn HTTP/1.1 -protokollan palveluotsikoista , jonka web-palvelin voi asettaa siinä vaiheessa, kun se tuottaa vastausta asiakkaalta saatuun pyyntöön . ETag-otsikon sisältö on tunniste, jonka arvo riippuu suoraan asiakkaan lataaman resurssin tilasta. Jatkossa tätä tunnistetta käytetään ladatun resurssin tilan päivittämiseen sen alkuperäiseen tilaan, joka sijaitsee Web-palvelimella . Tämä saavutetaan lähettämällä pyyntö HTTP/1.1 -palvelimelle ja määrittämällä ETag-tunniste otsikkoarvoksi - If-None-Match . Palvelin, löydettyään tällaisen otsikon, vertaamalla sen arvoa resurssin nykyiseen tilaan, ilmoittaa asiakkaalle, että asiakkaan välimuistiin tallennettu kopio on ajan tasalla, ts. ei tarvitse ladata uudelleen, tai muuten, sinun on ladattava uusin versio.

ETag on yksityinen tunniste, jonka verkkopalvelin on määrittänyt URL-osoitteesta löytyvän resurssin tietylle versiolle. Jos tämän osoitteen resurssin sisältö muuttuu uudeksi, uusi ETag määritetään. ETag-tunnisteiden käyttäminen tällä tavalla on samanlaista kuin sormenjälkien käyttäminen. Voit nopeasti verrata ja määrittää, ovatko resurssin kaksi versiota samoja vai eivät. ETag-tunnisteiden vertaaminen on järkevää vain saman URL -osoitteen Etag- tunnisteisiin verrattuna. Eri URL-osoitteista saadut tunnukset voivat olla samanlaisia ​​resursseista riippumatta, joten niiden vertailussa ei ole mitään järkeä.

Käyttöriskit

ETag-tunnisteiden käyttö HTTP -otsikossa on valinnaista (kuten jotkin muut HTTP 1.1 -otsikkokentät). Menetelmää, jolla ETag-tunnisteet luodaan, ei koskaan määritetty HTTP-määrityksessä.

Yleisiä menetelmiä ETag:n luomiseen ovat törmäyksenkestävän tiivistefunktion käyttö resurssin sisällöstä, viimeisen muokkausajan hash tai jopa pelkkä versionumero.

Vanhentuneiden välimuistitietojen käyttämisen välttämiseksi ETag-tunnisteiden luomiseen käytettävien menetelmien tulee varmistaa (sikäli kuin se on käytännöllistä), että jokainen ETag on ainutlaatuinen. Etag-luontifunktiota voidaan kuitenkin pitää "hyödyllisenä", jos voidaan osoittaa (matemaattisesti), että identtisten ETag-tunnisteiden luominen on "hyväksyttävän harvinaista", vaikka se voi tapahtua tai tulee tapahtumaan.

Joidenkin varhaisten ohjaustoimintojen, kuten CRC32 ja CRC64, tiedetään kärsivän tästä törmäysongelmasta . Tästä syystä ne eivät ole hyviä ehdokkaita käytettäväksi ETag-luonnissa.

Vahvat ja heikot tarkastukset

ETag-mekanismi tukee sekä vahvoja että heikkoja tarkistuksia. Ne erotetaan johtavan W/ETag-tunnisteen läsnäolosta, esim. "123456789"(vahva ETag-tarkistus), W/"123456789"(heikko ETag-tarkistus).

Vahva ETag-tarkistus tarkistaa, että molempien resurssien sisältö on tavu kerrallaan identtinen ja että kaikki muut kentät (kuten Content-Language) ovat samat. Vahvat ETag-tunnisteet mahdollistavat osittaisten vastausten tallentamisen välimuistiin ja kokoamisen, kuten tavualueen pyynnöissä.

Heikko ETag-tarkistus tarkistaa vain, että kaksi resurssia ovat semanttisesti samanarvoisia, mikä tarkoittaa, että ne ovat käytännössä vaihdettavissa keskenään ja että välimuistissa olevia kopioita voidaan käyttää. Nämä resurssit eivät kuitenkaan välttämättä ole identtisiä tavulta, joten heikot ETag-tunnisteet eivät sovellu tavualueen pyyntöihin. Heikot ETag-tunnisteet voivat olla hyödyllisiä tapauksissa, joissa vahvoja ETag-tunnisteita ei ole käytännössä mahdollista luoda verkkopalvelimella, kuten dynaamisesti luodun sisällön tapauksessa.

Tyypillinen käyttö

Normaalissa käytössä, kun URL-osoite haetaan, verkkopalvelin palauttaa resurssin yhdessä vastaavan ETag-arvon kanssa, joka on HTTP-kentässä ETag:

ETag: "686897696a7c876b7e"

Asiakas voi sitten tallentaa resurssin välimuistiin sen ETag:n kanssa. Myöhemmin, jos asiakas haluaa sivun samasta osoitteesta, se lähettää siitä aiemmin tallennetun ETag-kopion pyynnön mukana If-None-Match.

If-None-Match: "686897696a7c876b7e"

Tämän myöhemmän pyynnön yhteydessä palvelin voi nyt verrata asiakkaan ETagia resurssin nykyisen version ETag:iin. Jos ETag-arvot täsmäävät, mikä tarkoittaa, että resurssi ei ole muuttunut, palvelin saattaa lähettää takaisin hyvin lyhyen vastauksen, jonka HTTP-tila on 304 Ei muokattu . Tila 304 kertoo asiakkaalle, että sen välimuistiversio on edelleen ajan tasalla ja että sen pitäisi käyttää sitä.

Jos ETag-arvot eivät kuitenkaan täsmää, mikä tarkoittaa, että resurssi on todennäköisesti muuttunut, koko vastaus, mukaan lukien resurssin sisältö, palautetaan ikään kuin ETag:ia ei olisi käytetty. Tässä tapauksessa asiakas voi päättää korvata välimuistissa olevan resurssiversion juuri palautetulla versiolla ja uudella ETag:lla.

ETag:ia voidaan käyttää verkkosivuilla muutosten seurantaan ja ilmoituksiin. Web-sivujen tehokasta seurantaa vaikeuttaa se, että useimmat verkkosivustot eivät aseta Etag-otsikoita verkkosivuille. Kun verkkomonitorilla ei ole aavistustakaan, onko verkkosisältöä muokattu, kaikki sisältö on haettava ja analysoitava sekä sisällön julkaisijan että sen katsojan laskentaresurssien avulla.

Etag-seuranta

ETageja voidaan käyttää yksittäisten käyttäjien seurantaan [1] , koska tietosuojaa tavoittelevat käyttäjät voivat poistaa HTTP-evästeet . Heinäkuussa 2011 Ashkan Soltani ja tutkijaryhmä UC Berkeleyssä raportoivat, että useat verkkosivustot, mukaan lukien Hulu.com, käyttivät ETag:ia tällaisten kohteiden seuraamiseen [2] . Hulu ja KISSmetrics ovat lopettaneet tämän tekemisen 29. heinäkuuta 2011 [3] , koska KISSmetrics ja yli 20 sen asiakasta ovat joutuneet ryhmäkanteeseen "poistamattomien" seurantaevästeiden käytöstä osittain liittyen ETag:n käyttöön [4] .

Muistiinpanot

  1. seuranta ilman evästeitä (downlink) (17. helmikuuta 2003). Arkistoitu alkuperäisestä 3. kesäkuuta 2013. 
  2. Flash-evästeet ja Privacy II: nyt HTML5:llä ja ETag Respawningilla (downlink) (29. heinäkuuta 2011). Arkistoitu alkuperäisestä 3. kesäkuuta 2013. 
  3. Respawn Redux (downlink) (11. elokuuta 2011). Arkistoitu alkuperäisestä 3. kesäkuuta 2013. 
  4. AOL, Spotify, GigaOm, Etsy, KISSmetrics haastoivat oikeuteen ei-poistamattomista seurantaevästeistä . Käyttöpäivä: 2. kesäkuuta 2013. Arkistoitu alkuperäisestä 22. toukokuuta 2014.

Linkit