#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
для просмотра некоторых сообщений отладки, реализованных другими библиотеками.