Cookies (Informasjonskapsler)
Cookies er små tekstfiler som lagres i nettleseren din. Forskjellen fra LocalStorage er at cookies automatisk sendes til serveren hver gang du ber om en ny side. Dette gjør dem perfekte for å huske at en bruker er logget inn.
1. Sette og Lese Cookies
En cookie lagres alltid som et nøkkel-verdi par (for eksempel nøkkel=verdi). I JavaScript håndteres
alle cookies via document.cookie. Dette er en
spesiell egenskap; når du setter den lik en streng, overskriver
du ikke alt, men legger til eller oppdaterer én cookie.
document.cookie = "tema=moerk; path=/; max-age=3600";
// Lese alle cookies (Du får en stor tekststreng tilbake)
let mineCookies = document.cookie;
I koden over er tema nøkkelen og moerk verdien. Tingene etter semikolon er bare innstillinger for
cookien (som path=/ for at cookien skal gjelde på hele
nettsiden).
2. Viktig i Svelte: onMount()
SvelteKit forbereder ofte nettsiden på en server (SSR) før den
sendes. Siden objektet document ikke finnes på
serveren, vil koden krasje hvis du prøver å bruke document.cookie direkte i <script>-blokken!
Løsningen er å bruke onMount(). Den sørger for at
koden kjører først etter at siden er lastet i nettleseren.
onMount(() => {
// Trygt! Kjører bare i nettleseren
let cookies = document.cookie;
});
3. Cookie Parametere
Når du setter en cookie, legger du til parametere skilt med semikolon:
path=/: Hvor på nettsiden cookien gjelder./betyr hele nettstedet.max-age=3600: Hvor lenge cookien lever i sekunder (her: 1 time).expires=dato: Utløpsdato for cookien (eldre alternativ til max-age).Secure: Tillater kun at cookien sendes over sikker tilkobling (HTTPS).SameSite=Strict: Forhindrer at cookien sendes fra andre nettsider.
4. Cookie Krukken 🍪
Legg til dine egne cookies. De vil lagres og leve i en time, eller inntil du sletter dem.
5. Finne riktig informasjon
Siden document.cookie returnerer alt som én lang
tekststreng separert med ;, bruker vi ofte
String-metoder for å hente ut informasjonen vi trenger.
// 1. Del opp strengen ved hver "; "
let liste = document.cookie.split('; ');
// Nå er liste = ["tema=moerk", "spraak=no"]
// 2. Finn den cookien som starter med "tema="
let funnet = liste.find(c => c.startsWith('tema='));
6. Smarte hjelpefunksjoner
Siden det kan være litt kronglete å skrive og lese cookies direkte, er det veldig vanlig å lage noen enkle hjelpefunksjoner. Her er to enkle funksjoner du kan bruke: én for å legge til en cookie, og én for å lese ut verdien.
function setCookie(navn, tekst) {
document.cookie = navn + "=" + tekst + "; path=/; max-age=3600";
}
// 2. Funksjon for å lese ut verdien til en bestemt cookie
function getCookie(navn) {
let liste = document.cookie.split('; ');
let funnet = liste.find(c => c.startsWith(navn + '='));
if (funnet) {
// Deler strengen ved "=" og returnerer del 2 (verdien)
return funnet.split('=')[1];
}
return null;
}
7. Personvern
Siden cookies sendes frem og tilbake, brukes de ofte av annonsenettverk til å spore hva du gjør på tvers av nettsider (tredjepartscookies). Det er derfor lover (som GDPR og ePrivacy-direktivet) krever at vi spør brukeren om lov før vi lagrer sporing-cookies.