【问题标题】:Get express encoded cookie as header value获取快速编码的 cookie 作为标头值
【发布时间】:2015-04-04 07:52:39
【问题描述】:

请看通讯说明

  1. 客户端 --- POST /login(还没有 cookie)---> 节点服务器
  2. 节点服务器 ---> 'set-cookie' : '...' -> 客户端(设置 cookie 并将其用于下一个请求)

在第一次请求发送到客户端之前,如何获取设置为 set-cookie 标头的 cookie 的编码值?

使用 Express 3.x、cookieParser、expression-session 和 mongo 作为存储。

我试过了:

  1. 访问req.cookies,但未在第一次请求时填充 因为客户端还没有 cookie。
  2. res.getHeader('set-cookie') 返回 undefined 可能是因为它 在 express-session 调用 express 路由处理程序之后设置。

在服务器端,即使 request.cookie 为空,我如何访问处理程序中的 set-cookie 标头或响应对象中的 cookie 值?

【问题讨论】:

  • 您是否尝试访问 ClientsideServerside 执行的代码中的 cookie?如果是clientside,它第一次看到cookie 是在response 中。如果它是 serverside,请在设置时查看您将要/已提交给客户端的标头,或者查看从客户端收到的 requests 中的标头在设置之后到达。
  • 感谢您的评论。编辑问题,指定服务器端有问题。问题是当我使用res.getHeader('set-cookie') 在节点路由处理程序中检查要发送到客户端的标头时,它返回undefined。这就是为什么我想知道是否有一些特殊的技巧可以做到这一点。
  • 你能把你设置cookie的代码贴出来吗?你在哪里检查cookie。

标签: javascript node.js cookies session-cookies


【解决方案1】:

差不多一年后,但您无法访问的原因是因为 express-session 和其他中间件使用了一个名为 onHeaders 的包,“当响应即将写入标头时执行侦听器。”

所以你也必须使用它来修改标题

var onHeaders = require('on-headers')
onHeaders(res, function(){
    // knock yourself out
    console.log(res.getHeader('set-cookie'));
});

侦听器以相反的顺序触发,因此您必须尽快在代码中获取此代码(侦听器)的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 2021-10-21
    • 2015-12-29
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多