Где я могу увидеть заголовок Set Cookie на сервере, установленном с помощью express-session?

#node.js #express #cookies #express-session

#node.js #экспресс #файлы cookie #экспресс-сессия

Вопрос:

В postman, когда я делаю запрос на свой сервер, я получаю эти заголовки ответа:

Соединение: поддерживается
Длина содержимого: 3
Тип содержимого: текст / html; кодировка = utf-8
Дата: Ср, 02 Дек 2020 21:52:10 GMT
ETag: W /»3-f1UKn0xEFzo3Zk2TjxNV8PkqR6c»
Set-Cookie: connect.sid=s:HQ54fVZ7KP9jrPKP1j8Z93O8bIXN0CJl.lTSlYwA48TgarO7MtXGFiG1JL/POHe/SGV0cqikGGU4;
Путь=/; HttpOnly
X-Powered-By: Экспресс

Как я могу увидеть эти заголовки в express? Я приостановил сервер для этого запроса прямо перед res.send('hey') этим, но все, что я получил, это один заголовок:

 res.getHeaders()
{x-powered-by: 'Express'}
 

Я специально хочу увидеть файл cookie, который сервер отправляет в браузер. Как я могу видеть все заголовки ответов в express во время отладки?

Файл сервера:

 const express = require('express');
const session = require('express-session');

const app = express();

app.use(
  session({
    secret: 'very secret 12345',
  })
);

app.use(async (req, res, next) => {
  req.session.visits = req.session.visits ? req.session.visits   1 : 1;
  console.log(`${req.method}: ${req.path}`);
  console.log('req.headers.cookie: ', req.headers.cookie);
  next();
});

app.get('/sayhi', (req, res, next) => {
  res.send('hey');
});

app.listen(4001).on('listening', () => {
  console.log('info', `HTTP server listening on port 4001`);
});

 

Ответ №1:

Поскольку Content-Type Set-Cookie заголовок устанавливается после вашего вызова res.send() , поэтому вам нужно добавить прослушиватель событий для прослушивания при закрытии ответа.
Тогда вы могли бы увидеть, какие заголовки есть у этого ответа.
Но это функция обратного вызова после отправки ответа, поэтому вы можете просто посмотреть, какое значение отправлено в этом ответе.

 app.get('/sayhi', (req, res, next) => {
    res.on("close", function() {
        console.log("====== close event =======");
        console.log(res.getHeaders());
        console.log("====== close event =======");
    })
    res.send('hey');
});
 

Кстати, вы также можете использовать DEBUG=* node your_server.js для просмотра некоторых сообщений отладки, реализованных другими библиотеками.