Файлы cookie — это простые небольшие файлы / данные, которые отправляются клиенту по запросу сервера и хранятся на стороне клиента. Каждый раз, когда пользователь загружает сайт обратно, этот файл cookie отправляется вместе с запросом. Это помогает отслеживать действия пользователей. Существует множество способов использования файлов cookie HTTP.
- Управление сессиями
- Персонализация (системы рекомендаций)
- Отслеживание пользователей
Чтобы использовать куки с Koa, у нас есть функции: ctx.cookies.set () и ctx.cookies.get () . Чтобы установить новый файл cookie, давайте определим новый маршрут в нашем приложении Koa.
var koa = require('koa'); var router = require('koa-router'); var app = koa(); _.get('/', setACookie); function *setACookie() { this.cookie.set('foo', 'bar', {httpOnly: false}); } var _ = router(); app.use(_.routes()); app.listen(3000);
Чтобы проверить, установлен ли файл cookie, просто перейдите в браузер, запустите консоль и введите —
console.log(document.cookie);
Это приведет к следующему выводу (возможно, у вас установлено больше файлов cookie, возможно, из-за расширений в вашем браузере).
"foo = bar"
Вот пример вышесказанного.
Браузер также отправляет файлы cookie каждый раз, когда запрашивает сервер. Чтобы просмотреть файл cookie на своем сервере, на консоли сервера в маршруте добавьте следующий код к этому маршруту.
console.log('Cookies: foo = ', this.cookies.get('foo'));
В следующий раз, когда вы отправите запрос по этому маршруту, вы получите следующий вывод.
Cookies: foo = bar
Добавление файлов cookie со сроком действия
Вы можете добавить куки, срок действия которых истекает. Чтобы добавить cookie, срок действия которого истекает, просто передайте объект со свойством expires, установленным на время, когда вы хотите, чтобы срок его действия истек. Например,
var koa = require('koa'); var router = require('koa-router'); var app = koa(); _.get('/', setACookie); function *setACookie(){ //Expires after 360000 ms from the time it is set. this.cookies.set('name', 'value', { httpOnly: false, expires: 360000 + Date.now() }); } var _ = router(); app.use(_.routes()); app.listen(3000);
Удаление существующих файлов cookie
Чтобы удалить cookie, просто установите cookie в пустую строку. Например, если вам нужно очистить файл cookie с именем foo , используйте следующий код.
var koa = require('koa'); var router = require('koa-router'); var app = koa(); _.get('/', setACookie); function *setACookie(){ //Expires after 360000 ms from the time it is set. this.cookies.set('name', ''); } var _ = router(); app.use(_.routes()); app.listen(3000);
Это приведет к сбросу указанного куки. Обратите внимание, что вы должны оставить параметр HttpOnly равным true, если не используете cookie в коде на стороне клиента.