Что такое файлы cookie и как их использовать с JavaScript

12 set 2022 3 min di lettura
Что такое файлы cookie и как их использовать с JavaScript
Indice dei contenuti

Введение

Файлы cookie браузера были введены в Интернете для сохранения постоянной информации о пользователе. Первый вариант использования заключался в том, чтобы проверить, посещал ли пользователь ранее веб-сайт Netscape.

Файлы cookie — это строки, содержащие поле имени, поле значения и дополнительные необязательные атрибуты. Значения — это строки, и вы можете хранить все, что считаете нужным для вашего приложения. Google Analytics _ga, вероятно, является one of || the распространенный файл cookie в обращении, как правило, выглядит так:

  • Имя: _га
  • Значение: GA1.3.210706468.1583989741.
  • Домен:.example.com
  • Путь: /
  • Истекает /Максимальный возраст: 2022-03-12T05:12:53.000Z

Файлы cookie могут хранить до 4096 байт данных (включая имя, значение, домен, дату истечения срока действия и все остальное, что вы можете туда ввести). Вы можете добавить ограниченное количество файлов cookie для каждого домена, которое зависит от браузера.

Существует два основных способа создания файлов cookie:

  • С помощью HTTP вы можете отправить Set-Cookie вместе с заголовком ответа HTTP. В зависимости от технологий, которые вы используете для своего веб-сервера; вы можете использовать различные инструменты и библиотеки для управления заголовками файлов cookie. Эти инструменты должны создавать ответы HTTP, которые будут выглядеть примерно так:
HTTP/2.0 200 OK
 Content-type: text/html
 Set-Cookie: alligator_name=barry
 Set-Cookie: tasty_cookie=strawberry... More http Content

Вы можете добавить в свои файлы cookie информацию, такую как expiration date и функции безопасности, такие как директива Secure и флаг HttpOnly.

Set-Cookie: cookie_name=cookie_value; Expires=Wed, 17 Sep 2021 07:00:00 GMT; Secure; HttpOnly

Флаг HttpOnly означает, что файлы cookie не могут быть прочитаны или изменены браузером. А « Secure означает, что файлы cookie могут передаваться только по протоколу HTTPS. Это очень важно для защиты вашего приложения.

  • С Javascriptè сложнее управлять файлами cookie. У нас есть интерфейс document.cookie, который хранит наши файлы cookie и может быть переназначен. Например, на сайте, где установлен Google Analytics, в консоли разработчика мы можем сделать:
console.log(document.cookie)
 //logs something like "_ga=GA1.3.210706468.1583989741; _gid=GA1.3.1734708005.1583989741"

 //This equal sign does not work as you expect
 document.cookie = "alligator=alligator_cookie_content;"
 console.log(document.cookie)
 //logs "_ga=GA1.3.210706468.1583989741; _gid=GA1.3.1734708005.1583989741; alligator=alligator_cookie_content"
 //Notice that the previous piece of code appends the new cookie we created

 //A rough implementation of a cookie interface could look like this:
 const createCookie = (name, value) => document.cookie = name + '=' + value + ';'
 //For a real update we would first check if the cookie exists
 const updateCookie = (name, value) => document.cookie = name + '=' + value + ';'
 const deleteCookie = (name) => document.cookie = name + '=; Max-Age=-1;';

Сеансовые файлы cookie часто относятся к типу файлов cookie, которые существуют до закрытия браузера. Чтобы установить сеансовый файл cookie, достаточно НЕ указывать дату истечения срока действия.

Например, вы можете сохранить имя пользователя в файле cookie. Тот, у кого есть доступ к куки, будет иметь доступ к имени пользователя. Поскольку он находится в файле cookie, нам не нужно добавлять его в наши запросы.

Session cookies — это сбивающее с толку выражение. Файлы cookie сеанса также относятся к файлам cookie, которые вы используете для управления сеансами. Файлы cookie, которые удаляются при закрытии браузера, — это не единственные файлы cookie, которые вы можете использовать для управления сеансом.

Постоянные файлы cookie не удаляются из браузера, когда пользователь его закрывает. Эти файлы cookie имеют срок действия, который вы можете установить на своем сервере. Срок действия файла cookie может быть установлен через один день или десять лет.

Мы можем отличить файлы cookie, находящиеся в том же домене, от файлов cookie, полученных от сторонних поставщиков. Пример, который мы предоставили ранее с Google Analytics, является примером стороннего файла cookie. Сторонние файлы cookie могут использоваться для отслеживания действий пользователей. Чтобы установить сторонний файл cookie, вам необходимо установить ';domain=thirdpartydomain.com'.

Файлы cookie, как правило, являются временными, поэтому вы можете установить точную дату истечения срока действия. У вас есть две стратегии:

  • Используйте Expires и установите фиксированную дату истечения срока действия. Дата использует формат даты HTTP: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT. Так, например, если мы хотим, чтобы срок действия нашего файла cookie истекал 17 сентября 2020 года, мы можем сделать:
const jacksBirthday = new Date(2020, 8, 17);
 document.cookie = 'jacksage=27; expires =' + jacksBirthday.toUTCString() + ';';
  • Использование « Max-Age » поддерживается не всеми браузерами. Но это самое верное решение. Принудительно истечет срок действия файла cookie в течение определенного периода времени (в секундах) после того, как клиент его получит:
//Expires after one day
 const oneDayToSeconds = 24 * 60 * 60;
 document.cookie = 'daily_cookie=session_identifierXYZ; max-age = ' + oneDayToSeconds + ';';

Вывод

В этом руководстве мы объяснили, что такое файлы cookie и как их использовать с JavaScript.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.