在设置为 express-session 的服务器上,我在哪里可以看到设置 Cookie header?

Where can I see the Set Cookie header on the server set with express-session?

在邮递员中,当我向我的服务器发出请求时,我得到了这些响应 headers:

Connection: keep-alive
Content-Length: 3
Content-Type: text/html; charset=utf-8
Date: Wed, 02 Dec 2020 21:52:10 GMT
ETag: W/"3-f1UKn0xEFzo3Zk2TjxNV8PkqR6c"
Set-Cookie: connect.sid=s%3AHQ54fVZ7KP9jrPKP1j8Z93O8bIXN0CJl.lTSlYwA48TgarO7MtXGFiG1JL%2FPOHe%2FSGV0cqikGGU4;
Path=/; HttpOnly
X-Powered-By: Express

如何在 express 中查看这些 header?我在 res.send('hey') 之前为这个请求暂停了服务器,但我得到的只是一个 header:

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

我特别想查看服务器发送给浏览器的 cookie。如何在调试时查看 express 中的所有响应 header?

服务器文件:

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`);
});

因为Content-Type Set-Cookie header是在你调用res.send()之后设置的,所以你需要添加事件监听器,在响应关闭时监听。
然后你可以看到这个回复有什么header。
但是,它是响应发送后的回调函数,所以你只能看看这个响应中发送了什么值。

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 查看其他库实现的一些调试消息。