Простой и легковесный JavaScript API для работы с cookie браузера, который легко использовать и имеет небольшой размер (~2кБ) (gzip: 0.84кБ) и не требует зависимостей. Он не должен мешать работе других JavaScript библиотек или фреймворков.
Старая версия v1. Просмотр документации.
Особенности:
🚀 Без каких-либо зависимостей
🌱 Поддерживает все браузеры
🔥 Прошел строгие тесты
🍁 Поддерживает TypeScript, включая d.ts определение
📦 Поддерживает AMD/CommonJS
💥 cookie.min.js 2.01кБ (gzip: 0.95кБ)
Преимущества и недостатки
Норматив: DOM Level 2: HTMLDocument.cookie
MDN Cookies
MDN Cookies (Кодовые сниппеты)
Хотя cookies предоставляют удобство для долгосрочного хранения данных клиента и помогают снизить нагрузку на серверное хранилище, они имеют множество ограничений.1. В IE6 или более ранних версиях максимум 20
cookies
2. В IE7 и последующих версиях максимум 50
cookies
3. В Firefox максимум 50
cookies
4. В Chrome и Safari жесткие ограничения отсутствуют
Максимальный размер одного cookie составляет около 4096
байт, но для обеспечения совместимости обычно рекомендуется не превышать 4095
байт.
IE предоставляет возможность хранить данные пользователя, используя механизм userdata
, начиная с версии IE5.0
. Каждый объект может содержать до 128К
данных, а каждый домен может иметь до 1М
данных. Эти данные хранятся в кэше и остаются там, пока кэш не будет очищен.
Установите с помощью npm
, вам потребуется установить Node.js
на вашей системе.
$ npm install cookiejs --save
import cookie from 'cookiejs';
cookie("test", "tank", 1)
Или скачайте вручную и подключите cookiejs
в HTML:
<script src="https://unpkg.com/cookiejs/dist/cookie.min.js"></script>
<script type="text/javascript">
cookie("test", "tank", 1);
</script>
cookie(key, value, num)
key
— имя cookie
value
— значение cookie
num
— время истечения
cookie('test', 'tank', 1); // Создает cookie, который истекает через один день от текущего времени
cookie('test'); // Создает cookie, действующий на всем сайте
cookie('test', null); // Удаляет cookie `test`
cookie(); // Получает все cookies
cookie.set('test', 'tank', 1); // === cookie('test', 'tank', 1)
cookie.get('test'); // === cookie('test')
cookie.remove('test'); // === cookie('test', null)
cookie.remove('test3', 'test4');// Удаляет cookies `test3` и `test4`
``````markdown
cookie.clear(); // Очищает все cookies
cookie.all(); // Получает все cookies
cookie.set({
name1: 'value1',
name2: 'value2'
});
Устанавливает значение cookie и время его истечения
cookie.set(name, value, options)
Эффект тот же что и cookie(name, value, options)
cookie("test", "tank", 30); // Устанавливает cookie со сроком действия 30 дней
cookie("test", "123", { // Устанавливает cookie со сроком действия 7 дней, путь и домен
"expires": 7,
"path": '/',
"domain": ""
});
cookie({ "test": "123", "test2": "456" }, { // Батч-установка
"expires": 7,
"path": '/',
"domain": ""
});
Получает значение cookie
cookie.get(name)
Эффект тот же что и cookie(name)
cookie.get("wcj1"); // Получает строковое значение cookie wcj1
cookie("wcj1"); // Эквивалентная операция
Очищает все cookies
cookie.clear()
Эффект тот же что и cookie()
cookie.clear();
Удаляет cookie
cookie.remove(name)
Эффект тот же что и cookie(name, null)
cookie.remove("test"); // Удаляет cookie test
cookie("test", null); // Такой способ тоже удаляет cookie test
Вызовите отдельно cookie.set(...)
передачей обычного объекта в качестве последнего параметра. Каждый вызов свойства будет переопределять значения по умолчанию.
Пример:
cookie('name', 'value', { 'expires': 30, 'path': '/', 'domain': '' });
cookie.get('name');
cookie.remove('name');
Определяет время удаления cookie. Значение может быть числом, которое будет истолковано как количество дней с момента создания, либо экземпляром Date. Если значение не указано, cookie станет сессионной.
cookie('name', 'значение', { 'expires': 30 });
```
### путь
> По умолчанию: `/`
Путь, строкового типа, указывающий путь, доступный для cookie. Значение может быть директорией или путём.
```js
cookie.set('name', 'значение', { path: '' });
cookie.get('name'); // => 'значение'
```
### домен
> По умолчанию: Cookie видна только для домена или поддомена страницы, на которой она была создана, за исключением Internet Explorer ([см. здесь описание поведения IE по умолчанию](https://blogs.msdn.microsoft.com/ieinternals/2 Yöntemler/2009/08/20/internet-explorer-cookie-internals-faq)).
> ⚠️Если атрибут домен не указан, он будет считаться поддоменом в IE.
Указывает действительный домен, доступный для cookie. Все поддомены могут видеть эту cookie.
Пример:
```js
cookie.set('name', 'значение', { domain: 'поддомен.сайт.com' });
cookie.get('name'); // => undefined (необходимо прочитать на 'поддомен.сайт.com')
```
### безопасность
> По умолчанию: Без требования использования безопасного протокола.
Значение `true` или `false`, указывает, требуется ли использование безопасного протокола (HTTPS) при передаче cookie.
Примеры:
```js
cookie.set('name', 'значение', { secure: true });
cookie.get('name'); // => 'значение'
cookie.remove('name');
```
### SameSite
SameSite Cookie позволяет серверу требовать, чтобы определённая cookie не отправлялась при кросс-сайтовых запросах (где [Site (en-US)](https://developer.mozilla.org/en-US/docs/Glossary/Site) определяется регистрируемым доменом), что позволяет предотвратить атаки типа CSRF (Cross-Site Request Forgery).Cookies SameSite являются относительно новой областью, [поддержка которой уже реализована во всех основных браузерах](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#browser_compatibility).Ниже приведены примеры:
```js
cookie.set('name', 'значение', { sameSite: 'Strict' });
```
SameSite может принимать следующие три значения:
- `None`. Браузер будет продолжать отправлять cookies как при односайтовых, так и при кросс-сайтовых запросах, независимо от регистра символов.
- `Strict`. Браузер будет отправлять cookie только при доступе к одному и тому же сайту (в соответствии с ограничениями, указанными в разделе "Область действия Cookie").
- `Lax`. Похож на Strict, но с некоторыми исключениями, когда пользователь переходит на URL с внешнего сайта (например, через ссылку). В новых версиях браузеров это значение является значением по умолчанию, и same-site cookies будут сохраняться для некоторых кросс-сайтовых подзапросов, таких как загрузка изображений или вызовы frame'ов, но только если пользователь переходит на URL с внешнего сайта.
> Ранее, если атрибут SameSite не был установлен или не был поддерживаем работающим браузером, его поведение было эквивалентно None, и cookies были включены во все запросы — в том числе и кросс-сайтовые.
>
> Большинство популярных браузеров сейчас мигрируют [значение SameSite по умолчанию на Lax](https://www.chromestatus.com/feature/5088147346030592). Если требуется, чтобы cookies отправлялись как при односайтовых, так и при кросс-сайтовых запросах, теперь необходимо явно установить SameSite на None.
## Связанные- [storejs](https://github.com/jaywcjlove/store.js) Обертка над локальным хранилищем localStorage, предоставляющая простой API, без зависимостей, размером всего 2.08кБ (gzipped: 0.97кБ).
### Лицензия
Разрешено на условиях лицензии MIT.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )