Sobes.tech
Junior

Чӣ гуна кукиҳоро дар браузер насб кардан мумкин аст?

sobes.tech AI

Ҷавоб аз AI

Настройването на бисквитки в браузъра може да стане по няколко начина.

  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: '/' }); // Посочете пътя, ако е бил при настройката