Ответ
HTTP cookies — это небольшие фрагменты данных, которые сервер отправляет браузеру пользователя для хранения и последующей автоматической пересылки обратно с каждым запросом к этому серверу.
Основные цели использования:
- Управление сессией: Идентификатор сессии для аутентификации пользователя.
- Персонализация: Сохранение предпочтений (язык, тема, настройки).
- Отслеживание: Сбор аналитических и рекламных данных.
Пример cookie в HTTP-ответе:
Set-Cookie: sessionId=abc123; Expires=Wed, 21 Oct 2025 07:28:00 GMT; Path=/; Secure; HttpOnly; SameSite=Strict
Работа с cookies в Java (Servlet API):
// Создание и отправка cookie клиенту
Cookie userCookie = new Cookie("username", "john_doe");
userCookie.setMaxAge(60 * 60 * 24); // Время жизни: 24 часа в секундах
userCookie.setHttpOnly(true); // Защита от доступа через JavaScript
userCookie.setSecure(true); // Передача только по HTTPS
response.addCookie(userCookie);
// Чтение cookies из запроса
Cookie[] cookies = request.getCookies();
Типы cookies:
- Сессионные: Удаляются при закрытии браузера.
- Постоянные: Хранятся до истечения срока (
Expires/Max-Age). - Secure: Передаются только по защищенному соединению HTTPS.
- HttpOnly: Недоступны для JavaScript (защита от XSS-атак).
Ответ 18+ 🔞
Ну, слушай, а вот эти ваши кукисы, HTTP cookies, блядь. Это ж такие мелкие бумажки от сервера, которые он тебе в браузер суёт, как закладки, чтобы потом ты их обратно таскал при каждом чихе. Сервер такой: "На, держи, не потеряй, а то забудешь, кто ты такой, мудак".
Зачем они вообще нужны, эти штуки?
- Сессия, блядь. Чтобы ты, залогинившись, не вылетал нахуй после каждого клика. Типа "А, это опять ты, Васян? Проходи, не стесняйся".
- Персонализация, ёпта. Чтобы сайт помнил, что ты любишь тёмную тему и русский язык, а не светлую с китайским, как какой-то долбоёб.
- Слежка, сука. Ну, это чтобы рекламщики знали, что ты второй час смотришь товары для котов, и начали тебе везде сраные лотки подсовывать. Аналитика, понимаешь ли.
Вот смотри, как сервер эту дрянь в ответе пихает:
Set-Cookie: sessionId=abc123; Expires=Wed, 21 Oct 2025 07:28:00 GMT; Path=/; Secure; HttpOnly; SameSite=Strict
Перевод: "Запомни sessionId=abc123, живи с этим до 2025 года, таскай только по безопасному HTTPS, JavaScript'у его не показывай, и шляйся с ним только по моим путям, а не по всем соседним помойкам".
А вот как с этим в Java (Servlet API) ебёшься:
// Создаём и отправляем куку, типа "запомни пользователя"
Cookie userCookie = new Cookie("username", "john_doe");
userCookie.setMaxAge(60 * 60 * 24); // Живи, сука, сутки. 86400 секунд, если ты, конечно, считать умеешь.
userCookie.setHttpOnly(true); // Руки прочь от JS, пидарасы!
userCookie.setSecure(true); // Только по HTTPS, чтоб никто не подслушал.
response.addCookie(userCookie); // И пошёл нахуй, в ответ клиенту.
// А когда он вернётся, читаем, что он нам принёс
Cookie[] cookies = request.getCookies();
// А дальше смотри, не обосрись — там массив может быть null, если кук нет!
Какие они бывают, эти печеньки:
- Сессионные. Как память золотой рыбки. Закрыл браузер — и хуй ты кто. Пиздец амнезия.
- Постоянные. Эти, блядь, живучие. Сидят, сука, до указанной даты, как тараканы за плинтусом.
ExpiresилиMax-Ageим закон. - Secure. Пафосные, блядь. Путешествуют только по защищённому HTTPS, как дипломаты в бронированном лимузине. По HTTP — ни ногой.
- HttpOnly. Стеснительные. Сидят в браузере, но для JavaScript'а невидимки. От XSS-ублюдков защита, чтоб им пусто было.
Вот и вся магия, а то некоторые думают, что там навороченная хуйня. По сути — просто ключики, чтобы сервер тебя узнавал в лицо, а не как случайного бомжа в своём доме.