cookies (js)

Куки, document.cookie - https://learn.javascript.ru/cookie

Кілька прикладів роботи з кукі на JavaScript:

1. Встановлення кукі:

// Встановлюємо кукі з іменем "username" та значенням "John"
document.cookie = "username=John";

2. Отримання значення кукі:

// Отримуємо всі кукі
var allCookies = document.cookie;

// Отримуємо значення кукі з іменем "username"
var usernameCookie = getCookie("username");

// Функція для отримання значення кукі за іменем
function getCookie(name) {
    var nameEQ = name + "=";
    var cookiesArray = allCookies.split(';');
    for(var i = 0; i < cookiesArray.length; i++) {
        var cookie = cookiesArray[i];
        while (cookie.charAt(0) == ' ') {
            cookie = cookie.substring(1, cookie.length);
        }
        if (cookie.indexOf(nameEQ) == 0) {
            return cookie.substring(nameEQ.length, cookie.length);
        }
    }
    return null;
}

‼️Помітив, що якщо в куки потрапляє email - то він береться в лапки (очевидно, через знак @), тобто при зчитуванні треба буде ще видаляти лапки.

NameValue

login

olexsyn

email

"olex@syn.mail"

function getCookie(name)
{
    let nameEQ = name + "=";
    let cookiesArray = document.cookie.split(';');
    for (let i = 0; i < cookiesArray.length; i++)
    {
        let cookie = cookiesArray[i];
        while (cookie.charAt(0) == ' ') {
            cookie = cookie.substring(1, cookie.length);
        }
        if (cookie.indexOf(nameEQ) == 0) {
            let quoted_email = cookie.substring(nameEQ.length, cookie.length);
            // email в кукі записується в лапках!
            const re = /("|')(.*?)\1/gm; // тут ми лапки знаходимо і беремо що між ними видаляємо
            return quoted_email.replace(re, "$2"); // cookie.substring(nameEQ.length, cookie.length);
        }
    }
    return null;
}

let usernameCookie = getCookie("eml");
let login = document.getElementById("login");
login.value = usernameCookie;

3. Видалення кукі:

// Функція для видалення кукі за іменем
function deleteCookie(name) {
    document.cookie = name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}

// Видаляємо кукі з іменем "username"
deleteCookie("username");

Зверніть увагу, що кукі зазвичай зберігаються як один рядок, розділений крапкою з комою (;). У JavaScript немає прямого методу для роботи з кукі, але ви можете використовувати document.cookie для звернення до всіх кукі. Щоб отримати значення конкретної кукі, вам потрібно розбити рядок кукі на окремі кукі та виконати пошук значення кукі за іменем. Для видалення кукі потрібно встановити її строку з вичеркуванням (Expires) у минулому.


Десь побачив таке:

...странно то, что никто ещё не задал вопроса о том как вставлять доп свойства в сеткуки! Нет ни одного примера, где вставляется адрес path=/; для куки. Делается это так:

setCookie('name', 'value', {path : '/'});

Last updated