req.cookies и req.signedCookies в Express.js

Опубликовано: 26 Июля, 2021

req.cookies: Предполагается, что Request.Cookies представляют собой файлы cookie, которые поступают от клиента (браузера), а Response.Cookies - это файлы cookie, которые отправляются обратно клиенту (браузеру). Файлы cookie - это небольшие файлы / данные, которые отправляются клиенту с запросом сервера и хранятся на стороне клиента. Это помогает нам отслеживать действия пользователя.

Cookie-parser - это промежуточное программное обеспечение, которое анализирует файлы cookie, прикрепленные к объекту запроса клиента. Когда мы используем промежуточное ПО для парсера файлов cookie, это свойство является объектом, который содержит файлы cookie, отправленные по запросу. Если запрос не содержит файлов cookie, по умолчанию используется {}.

Пример:

Javascript




var cookieParser = require( 'cookie-parser' );
var express = require( 'express' );
var app = express();
var PORT = 3000;
app.use(cookieParser());
app.get( '/user' , function (req, res) {
req.cookies.name= 'Gourav' ;
req.cookies.age=12;
console.log(req.cookies);
res.send();
});
app.listen(PORT, function (err){
if (err) console.log(err);
console.log( "Server listening on PORT" , PORT);
});

Вывод: Теперь откройте браузер и сделайте запрос GET на http: // localhost: 3000 / user , теперь вы можете увидеть следующий вывод на своей консоли:

Сервер прослушивает PORT 3000
[Объект: нулевой прототип] {имя: 'Гурав', возраст: 12}

req.signedCookies: Свойство req.signedCookies содержит подписанные файлы cookie, отправленные по запросу, без подписи и готовые к использованию при использовании промежуточного программного обеспечения парсера файлов cookie. Подписание файла cookie не делает его скрытым или зашифрованным, а просто предотвращает подделку файла cookie. Он работает, создавая HMAC значения (текущий файл cookie) и закодировав его в base64. Когда файл cookie считывается, он пересчитывает подпись и проверяет, соответствует ли она прикрепленной к нему подписи. Если она не совпадает, то выдает ошибку. Если подписанные файлы cookie не отправляются, свойство по умолчанию равно {}.

Пример:

Javascript




var cookieParser = require( 'cookie-parser' );
var express = require( 'express' );
var app = express();
var PORT = 3000;
app.use(cookieParser());
app.get( '/user' , function (req, res) {
// Setting multiple cookies
req.signedCookies.title= 'Gourav' ;
req.signedCookies.age=12;
console.log(req.signedCookies);
res.send();
});
app.listen(PORT, function (err){
if (err) console.log(err);
console.log( "Server listening on PORT" , PORT);
});

Вывод: Теперь откройте браузер и сделайте запрос GET на http: // localhost: 3000 / user , теперь вы можете увидеть следующий вывод на своей консоли:

 Сервер прослушивает PORT 3000
[Объект: нулевой прототип] {title: 'Gourav', возраст: 12}

Разница между req.cookies и req.signedCookies -

req.cookies req.signedCookies
Мы не можем определить, были ли данные, возвращаемые в файл cookie, изменены клиентом или нет. Мы используем подписанный файл cookie, если хотим убедиться, что данные, возвращаемые в файл cookie, не были изменены клиентом.
Если запрос не содержит файлов cookie, по умолчанию используется {}. Если подписанные файлы cookie не отправляются, это свойство по умолчанию равно {}.
Сервер не может определить, были ли файлы cookie изменены клиентом. Сервер может определить, были ли файлы cookie изменены клиентом.
Нет случая добавления подписи к cookie. Подпись добавляется как часть файла cookie вместе с фактическими данными cookie. Подпись получена из данных cookie и секрета, известного только серверу.