Sobes.tech
Junior

Kako postaviti kolačiće u pretraživaču?

sobes.tech АИ

Одговор од АИ

Установити бисквитку у прегледачу може на неколико начина.

  1. Преко HTTP заглавља Set-Cookie са сервера. Ово је главна метода за постављање бисквитки, која се одвија на страни сервера. Сервер шаље прегледачу заглавље Set-Cookie, које instructs прегледач да сачува одређен пар кључ-врједност.

    Пример HTTP одговора са сервера:

    HTTP/1.1 200 OK
    Content-Type: text/html
    Set-Cookie: username=johndoe; Expires=Thu, 21 Dec 2023 12:00:00 GMT; Path=/; Secure; HttpOnly
    Set-Cookie: settings=theme=dark&lang=en; Path=/
    

    Параметри Set-Cookie заглавља:

    • name=value: Име и вредност бисквитке. Обавезно.
    • Expires=<датум>: Датум и време истека бисквитке. Ако није наведен, бисквитка је сесијска и брише се при затварању прегледача. Формат датума је RFC 1123.
    • Max-Age=<секунди>: Максимално време трајања бисквитке у секундима. Има приоритет над Expires.
    • Domain=<домен>: Домену на који је бисквитка доступна. По подразумевану вредност - тренутни домен (али не и поддомени).
    • Path=<путања>: Путања на серверу, за коју је бисквитка доступна. По подразумеваној вредности - коријенска путња /.
    • Secure: Флаг који указује да бисквитка треба да се шаље само преко HTTPS.
    • HttpOnly: Флаг који указује да бисквитка није доступна преко JavaScript-а document.cookie. Штити од XSS напада.
    • SameSite=<режим>: Управља слањем бисквитки при крос-сайтовским захтевима. Могуће вредности: Strict, Lax (подразумевано), None.
  2. Преко JavaScript-а на страни клијента. Помоћу објекта document.cookie може се читати, записивати и брисати бисквитке.

    Запис бисквитке:

    // Постављање једноставне бисквитке
    document.cookie = "username=johndoe";
    
    // Постављање бисквитке са `expires`, `path`, `secure` и `SameSite=Lax`
    const expiryDate = new Date();
    expiryDate.setTime(expiryDate.getTime() + (30 * 24 * 60 * 60 * 1000)); // 30 дана
    document.cookie = `token=abcdef123456; expires=${expiryDate.toUTCString()}; path=/; secure; SameSite=Lax`;
    

    Читање бисквитке:

    // `document.cookie` враћа низ свих доступних бисквитки у формату "key1=value1; key2=value2; ..."
    console.log(document.cookie);
    

    Брисање бисквитке: За брисање бисквитке потребно је поставити њену датум истека у прошлост.

    document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; // поставити `expires` у прошлост
    

    Важно је приликом брисања навести исте параметре path и domain (ако су били постављени), као и при креирању. SameSite такође мора да се поклапа за исправно брисање.

  3. Помоћу спољашњих JavaScript библиотека. Постоје библиотеке које олакшавају рад са бисквиткама (нпр. js-cookie). Оне пружају једноставније API за постављање, читање и брисање бисквитки.

    Пример са js-cookie:

    // Укључивање библиотеке
    // <script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.1/dist/js.cookie.min.js"></script>
    
    // Постављање бисквитке
    Cookies.set('username', 'johndoe');
    
    // Постављање бисквитке са опцијама
    Cookies.set('token', 'abcdef123456', { expires: 30, path: '/', secure: true, sameSite: 'Lax' }); // expires у данима
    
    // Читање бисквитке
    const username = Cookies.get('username'); // Враћа 'johndoe' или undefined
    const allCookies = Cookies.get(); // Враћа објекат са свим бисквиткама
    
    // Брисање бисквитке
    Cookies.remove('username');
    Cookies.remove('token', { path: '/' }); // Навести пут, ако је био при постављању