JS властивість Document.cookie
Загальний опис
Властивість cookie
об'єкта Document
в JavaScript відіграє життєво важливу роль у керуванні cookies веб-сторінки. Cookies — це невеликі фрагменти даних, які веб-сайти зберігають на комп'ютері користувача, щоб зберегти інформацію про його сеанс, переваги або інші дані, які сайт може використовувати під час перегляду. Властивість cookie
дозволяє веб-розробникам отримувати доступ до цих даних та модифікувати їх, що є надзвичайно корисним для реалізації функцій, таких як аутентифікація користувачів, збереження налаштувань користувача та відстеження статусу сеансу користувача.
На базовому рівні, властивість cookie
може бути використана для читання та запису cookies. Для читання всіх доступних cookies на сторінці, просто використайте document.cookie
. Це поверне рядок, що містить всі cookies, встановлені для даної веб-сторінки, у форматі name=value
, розділені крапкою з комою. Для додавання або оновлення cookie, ви просто призначаєте рядок до document.cookie
з іменем cookie, значенням та, за необхідності, атрибутами, такими як expires
, path
, domain
, secure
, та SameSite
.
Створення Cookie
Для створення нового cookie, ви могли б використовувати код подібний до наступного:
document.cookie = "username=John Doe; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";
Цей код створює cookie з іменем username
, значенням John Doe
, датою закінчення 18 грудня 2023 року
і шляхом /
, що означає, що cookie доступний для всієї веб-сторінки.
Читання Cookies
Читання cookies вимагає деякого парсингу, оскільки document.cookie
повертає всі cookies як один рядок. Ви могли б ітерувати через цей рядок, використовуючи метод split()
, щоб отримати конкретне значення cookie:
let cookies = document.cookie.split('; ');
for(let i = 0; i < cookies.length; i++) {
let parts = cookies[i].split('=');
if(parts[0] === 'username') {
console.log('Username:', parts[1]);
break;
}
}
Видалення Cookies
Для видалення cookie, встановіть його атрибут expires
на минулу дату:
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/";
Це "видаляє" cookie, встановлюючи його термін дії на минулу дату, що змушує браузер автоматично видалити його.
Безпека та обмеження
При роботі з cookies, важливо враховувати питання безпеки та конфіденційності. Використання атрибутів secure
та SameSite
може допомогти захистити ваші cookies від міжсайтових атак і перехоплення. Також, варто пам'ятати, що користувачі можуть вимкнути cookies у своєму браузері, тому не варто повністю покладатися на них для критично важливих функцій веб-сайту.
У резюме, document.cookie
є потужним інструментом для керування cookies в JavaScript, який може значно покращити користувацький досвід на вашому сайті. Від створення простих налаштувань і відстеження сеансів до реалізації складних механізмів аутентифікації, вміння ефективно працювати з cookies є незамінним навиком для сучасного веб-розробника.
Порада: | Завжди вказуйте атрибут |
Порада: | Для забезпечення безпеки даних користувачів, завжди використовуйте атрибут |
Порада: | Враховуйте, що при кожному зверненні до властивості
|
Синтаксис
Document.cookie
Значення
Return
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
1 |
1 |
1 |
3 |
12 |
Переглядач | ||||
---|---|---|---|---|
4.4 |
18 |
4 |
1 |
Переглядач | ||
---|---|---|
- |
- |
Приклади
У цьому прикладі користувач може ввести ім'я та значення cookie
, а потім зберегти його за допомогою кнопки "Зберегти cookie". Після цього він може витягти значення цього cookie
за допомогою кнопки "Отримати значення cookie". Результат виводиться нижче кнопок.
У цьому коді ми спочатку створюємо cookie
з ім'ям "username" і значенням "Taras", вказуючи дату закінчення дії та шлях. Потім ми читаємо всі доступні cookie
, розділяємо їх за допомогою ;
і шукаємо cookie
з ім'ям "username"
, щоб вивести привітання для користувача. Цей приклад ілюструє базове використання cookie
для зберігання та доступу до даних користувача.
// Запис cookie
document.cookie = "username=Taras; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/";
// Читання cookie
var cookies = document.cookie.split('; ');
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i].split('=');
if (cookie[0] === 'username') {
console.log('Привіт, ' + cookie[1]);
}
}
У цьому коді функція manageCookie
приймає чотири параметри: дію (set
, get
, delete
), ім'я cookie
, значення cookie
(для додавання або оновлення) та кількість днів до закінчення дії (тільки для додавання). Це дозволяє легко встановлювати, отримувати та видаляти cookie
без необхідності кожного разу писати повторюваний код для маніпуляцій з cookie
.
function manageCookie(option, name, value, days) {
if (option === 'set') {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
} else if (option === 'get') {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
} else if (option === 'delete') {
document.cookie = name + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
}
// Використання функції
manageCookie('set', 'userPreferences', 'darkMode', 7); // Встановлення cookie
var userPref = manageCookie('get', 'userPreferences'); // Отримання cookie
console.log('Настройки користувача:', userPref);
manageCookie('delete', 'userPreferences'); // Видалення cookie