1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/jaywcjlove-cookie.js

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README-zh.md 12 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 07.03.2025 18:44 3776819

JavaScript Cookie

Загрузки Сборка и тестирование Статус покрытия README-zh.md

:cookie: Простой и легковесный 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К данных, а каждый домен может иметь до данных. Эти данные хранятся в кэше и остаются там, пока кэш не будет очищен.

Установка и использование

Установите с помощью 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

Батч-установка значений 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

Вызовите отдельно cookie.set(...) передачей обычного объекта в качестве последнего параметра. Каждый вызов свойства будет переопределять значения по умолчанию.

Пример:

cookie('name', 'value', { 'expires': 30, 'path': '/', 'domain': '' });
cookie.get('name');
cookie.remove('name');

expires

Определяет время удаления 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/jaywcjlove-cookie.js.git
git@api.gitlife.ru:oschina-mirror/jaywcjlove-cookie.js.git
oschina-mirror
jaywcjlove-cookie.js
jaywcjlove-cookie.js
master