1. Uvod

Prilikom rada sa web aplikacijama često je potrebno da se određeni podaci zapamte između dva zahteva korisnika. Web je po svojoj prirodi stateless (bez pamćenja stanja) – svaki HTTP zahtev ka serveru je nezavisan i server ne zna ništa o prethodnim aktivnostima korisnika.

Na primer: "korisnik se prijavio na sajt" ili "korisnik je izabrao jezik stranice" ili "korisnik je dodao proizvode u korpu"

Da bi sajt mogao da zapamti ove informacije, koriste se kolačići (cookies).

Kolačić je mala tekstualna informacija koju web sajt čuva u pregledaču korisnika. Kada korisnik ponovo poseti isti sajt, pregledač šalje te informacije nazad serveru ili ih JavaScript može pročitati.

Kolačići se koriste za: 

  • pamćenje prijave korisnika
  • čuvanje podešavanja (jezik, tema)
  • praćenje statistike poseta
  • rad korpe u internet prodavnici

U JavaScriptu se kolačići čuvaju i čitaju preko objekta document.cookie.


Pogledajte još jednom kako se radi:

Najjednostavniji način za kreiranje kolačića je dodela vrednosti svojstvu:

document.cookie = "ime=Petar";

Ovde se kreira kolačić:

ime = Petar

Ako sada u konzoli pregledate vrednost:

console.log(document.cookie);

videćete:

ime=Petar

Međutim, ovakav kolačić traje samo dok je pregledač otvoren.


Kolačići mogu imati rok trajanja. To se definiše atributom expires.

Primer:

let datum = new Date();
datum.setTime(datum.getTime() + (24 * 60 * 60 * 1000));

document.cookie = "korisnik=Marko; expires=" + datum.toUTCString();

Ovaj kolačić traje 1 dan.

Objašnjenje:

deo značenje
Date() trenutni datum
setTime() podešava vreme
24 * 60 * 60 * 1000 broj milisekundi u jednom danu
toUTCString() format datuma za cookie

Da bi kolačić bio dostupan na svim stranicama sajta koristi se atribut path.

document.cookie = "grad=NoviSad; path=/";

Bez ovoga kolačić može važiti samo za određenu stranicu.

Svi kolačići dostupni stranici nalaze se u promenljivoj:

document.cookie

Primer:

console.log(document.cookie);

Rezultat može biti:

ime=Petar; grad=NoviSad; tema=dark

Problem je što su svi kolačići u jednom stringu.

Zato je potrebno izdvojiti određeni kolačić.


Primer funkcije:

function procitajCookie(ime) {

    let kolačići = document.cookie.split(";");

    for(let i = 0; i < kolačići.length; i++) {

        let c = kolačići[i].trim();

        if(c.indexOf(ime + "=") == 0) {
            return c.substring(ime.length + 1);
        }
    }

    return "";
}

Upotreba:

let korisnik = procitajCookie("korisnik");

console.log(korisnik);

Ako kolačić postoji:

Marko

Kolačić se briše tako što mu se postavi datum isteka u prošlosti.

Primer:

document.cookie = "korisnik=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/";

Pregledač tada briše kolačić.


HTML:

<input type="text" id="ime">
<button onclick="sacuvaj()">Sačuvaj ime</button>
<button onclick="ucitaj()">Prikaži ime</button>

<p id="rezultat"></p>

JavaScript:

function sacuvaj(){

    let ime = document.getElementById("ime").value;

    document.cookie = "korisnik=" + ime + "; path=/";
}

function ucitaj(){

    let korisnik = procitajCookie("korisnik");

    document.getElementById("rezultat").innerHTML = korisnik;
}

Korisnik unese ime → ono se čuva u kolačiću → može se kasnije ponovo učitati.


Prednosti:

  • omogućavaju pamćenje podataka
  • rade na svim pregledačima
  • jednostavni za korišćenje

Ograničenja:

  • >mala količina podataka (oko 4KB)
  • korisnik može obrisati kolačiće
  • bezbednosna ograničenja

Zbog toga se danas često koriste i druge tehnologije poput localStorage ili sessionStorage, ali su kolačići i dalje veoma važni.


7. Zadaci za vežbu

Zadatak 1: Napraviti kolačić koji čuva: jezik = sr

document.cookie = "jezik=sr; path=/";

Zadatak 2:  Kreirati kolačić koji čuva: tema = dark  i važi 7 dana.

let d = new Date();
d.setTime(d.getTime() + (7*24*60*60*1000));

document.cookie = "tema=dark; expires=" + d.toUTCString() + "; path=/";

Zadatak 3:  Napisati funkciju koja čita kolačić jezik.

function procitajJezik(){

    let cookies = document.cookie.split(";");

    for(let i=0;i<cookies.length;i++){

        let c = cookies[i].trim();

        if(c.indexOf("jezik=") == 0){
            return c.substring(6);
        }
    }

    return "";
}

Zadatak 4: Obrisati kolačić tema.

document.cookie = "tema=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/";

8. Dodatni zadaci za rad kod kuće (bez rešenja)

Zadatak 1:

Napraviti stranicu koja ima: input za unos imena korisnika, dugme Sačuvaj. Klikom na dugme ime se čuva u kolačiću imeKorisnika.


Zadatak 2: Napraviti dugme Prikaži ime koje iz kolačića čita ime korisnika i prikazuje ga na stranici.


Zadatak 3: Napraviti dugme Obriši ime koje briše kolačić.


Zadatak 4:

Napraviti stranicu koja pamti omiljenu boju korisnika pomoću kolačića i prilikom ponovnog učitavanja stranice postavlja pozadinu te boje.


Zadatak 5 (napredni):  Napraviti kolačić brojPoseta koji broji koliko puta je korisnik otvorio stranicu.

Primer rezultata:

Posetili ste ovu stranicu 5 puta.

9. Zaključak

Kolačići su jedan od osnovnih mehanizama za pamćenje podataka u web aplikacijama. Oni omogućavaju da se informacije čuvaju u pregledaču korisnika i koriste prilikom narednih poseta sajtu. U JavaScriptu se kolačići kreiraju, čitaju i brišu pomoću objekta document.cookie. Iako imaju određena ograničenja, i dalje predstavljaju važan deo web programiranja i koriste se u velikom broju modernih web aplikacija.


...

Poslednja izmena: среда, 18. март 2026, 10:57