Ответ
Cookie могут хранить данные в нескольких форматах, выбор зависит от структуры и требований безопасности.
Основные форматы:
-
Простой текст (Plain Text)
- Ключ-значение с атрибутами.
- Пример:
session_id=abc123; expires=Wed, 21 Oct 2025 07:28:00 GMT; path=/; Secure; HttpOnly
-
JSON (внутри значения)
- Для передачи структурированных данных. Значение cookie — это строка, содержащая JSON.
- Пример значения:
{"theme":"dark","lang":"en"} - Требует кодирования (например,
encodeURIComponentв JS) и парсинга на стороне клиента/сервера.
-
Base64
- Используется для кодирования бинарных данных или компактного представления JSON/текста.
- Пример:
eyJ1c2VyX2lkIjoxMjMsInJvbGUiOiJhZG1pbiJ9(декодируется в{"user_id":123,"role":"admin"}).
-
Подписанные/зашифрованные форматы (например, JWT)
- Обеспечивают целостность и конфиденциальность. Сервер может проверить, что данные не были изменены клиентом.
- Пример JWT:
eyJhbGciOiJIUzI1NiIs...(состоит из Header.Payload.Signature).
Ключевые атрибуты cookie (независимо от формата значения): Domain, Path, Expires/Max-Age, Secure, HttpOnly, SameSite.