【问题标题】:Where can I see the Set Cookie header on the server set with express-session?我在哪里可以看到使用 express-session 设置的服务器上的 Set Cookie 标头?
【发布时间】:2020-12-04 15:09:43
【问题描述】:

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

连接:保持活动状态
内容长度: 3
内容类型: text/html; charset=utf-8
日期:格林威治标准时间 2020 年 12 月 2 日星期三 21:52:10
ETag: W/“3-f1UKn0xEFzo3Zk2TjxNV8PkqR6c”
Set-Cookie: connect.sid=s%3AHQ54fVZ7KP9jrPKP1j8Z93O8bIXN0CJl.lTSlYwA48TgarO7MtXGFiG1JL%2FPOHe%2FSGV0cqikGGU4;
路径=/; HttpOnly
X-Powered-By: Express

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

【问题讨论】:

    标签: node.js express cookies express-session


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      • 2022-01-12
      • 2020-09-06
      • 2020-08-16
      • 1970-01-01
      • 2019-11-12
      相关资源
      最近更新 更多