Slik ble informasjonskapsler til nettleserens favorittmat
Hvorfor nettsidene dine har matrelatert hukommelse
Tenk deg følgende: Du sitter på en kafé, og en utvikler kommer bort. De ser på disken med kjeks og spør: "Kan disse opprettholde en sesjon?" De lover, dette er et genuint spørsmål om informasjonslagring.
Denne søte forbindelsen mellom dessert og data er slett ikke tilfeldig. Den forteller historien om hvordan nettet lærte å huske.
Nettet har dårlig hukommelse
De færreste tenker over dette: hver gang du klikker på en lenke eller sender inn et skjema, sender nettleseren din en helt fersk forespørsel til serveren. Serveren har ingen innebygd måte å huske hva du gjorde for tre sekunder siden. Den vet ikke at du logget inn, la varer i handlekurven, eller valgte norsk som språk.
Dette er ikke en feil – det er HTTPs stateless design med vilje. Hver forespørsel må inneholde all informasjon den trenger. Serveren vet ikke at du er samme person som klikket «Legg i handlekurv» for et øyeblikk siden. For serveren er den forrige og denne forespørselen komplette fremmede.
For enkle nettsider som bare leverer statiske dokumenter, fungerte dette fint. Men det moderne nettet ville ha mer: handlekurver, personlige dashboards, vedvarende innlogginger og «husk meg»-funksjoner. Nettets hukommelsestap ble plutselig et kjempestort problem.
Tilstand: Minnet nettet trengte
Tilstand betyr rett og slett informasjon fra tidligere handlinger som påvirker hva som skjer videre. Når du legger det tastaturet i handlekurven, endres tilstanden: nå er det et tastatur der. Når du kommer til kassen, må serveren lese denne tilstanden for å inkludere tastaturet i totalen.
Tilstand kan lagres hvor som helst – i minne, databaser, eller i nettleseren selv. Det egentlige spørsmålet er ikke hvor, men hvordan koble separate forespørsler sammen til en sammenhengende opplevelse.
Sesjoner: Skaper kontinuitet
En sesjon er en logisk beholder som knytter sammen flere isolerte HTTP-forespørsler til én sammenhengende flyt. Tenk på det som historien som forbinder individuelle sidebesøk. En sesjon kan strekke seg fra innlogging til utlogging, eller det kan være en anonym handletur uten konto.
Her er det avgjørende punktet: HTTP oppretter ikke sesjoner automatisk. Applikasjonen din bestemmer når sesjoner begynner, hva de inneholder, og når de avsluttes. Én bruker kan ha fem aktive sesjoner i forskjellige faner, og det er helt normalt.
Identitetsproblemet
Her blir det interessant. En server håndterer millioner av aktive sesjoner samtidig. Når en ny forespørsel kommer inn, må serveren svare på et kritisk spørsmål: «Hvem sin sesjon er dette?»
Her kommer sesjonsidentifikatoren inn – en unik merking som skiller din sesjon fra alle andres. Den trenger ikke å bety noe eller være knyttet til en ekte identitet. Det kan være en tilfeldig streng som 7f41c0a9 eller session_88293847. Det som betyr noe, er at serveren kan bruke denne merkingen til å hente riktig sesjonsdata fra lagringen.
Identifikatoren er ikke dataen selv – den er oppslagsnøkkelen. Serveren sier: «Gi meg sesjonsdataene som ligger under 7f41c0a9,» og vips, handlekurven din dukker opp igjen.
Cookies: Leveringsmekanismen
Nå sitter vi igjen med ett siste puslespill: hvordan følger denne identifikatoren med hver eneste forespørsel?
Serveren kan ikke stole på seg selv – hver forespørsel kan treffe en annen serverinstans. Nettleseren må lagre identifikatoren og sende den tilbake automatisk hver gang.
Og akkurat det er hva cookies gjør. Serveren sender en liten dataporsjon – vanligvis bare et navn-verdi-par – til nettleseren, som lagrer det og pliktoppfyllende returnerer det med hver eneste påfølgende forespørsel. Cookies ble nettets hukommelsesmekanisme.
Hvorfor egentlig «Cookie»?
Her blir etymologien uklar. Begrepet kommer sannsynligvis fra «magic cookie» – et Unix-konsept der en token eller verdi sendes mellom programmer. Om en utvikler hos Netscape var genuint sulten da funksjonen ble implementert, eller bare setter pris på Unix-humor, er tapt for historien.
Det vi vet, er at de valgte et begrep som garanterte at enhver juniorutviklers første søk ville gi bilder av bakverk i stedet for dokumentasjon. Kanskje det er programmererhumor, eller kanskje de rett og slett undervurderte søkevolumet for «sjokolade-chip cookies oppskrift.»
Uansett, neste gang du ser «akksepter cookies» på en nettside, vet du at du ikke bare godtar å bli fulgt – du deltar i en smart løsning som transformerte det minneløse nettet til noe som faktisk husker deg.
Hos NameOcean hjelper vi startups og utviklere med å bygge web-tilstedeværelse, fra domeneregistrering til hosting. For noen ganger er det ikke nok å forstå cookies – du trenger infrastrukturen til å ta dem i bruk.