【问题标题】:How to set multiple cookies with setHeader in NodeJs如何在 NodeJs 中使用 setHeader 设置多个 cookie
【发布时间】:2021-11-21 00:40:58
【问题描述】:

我一直在做一个node js项目,我需要设置两个不同的cookie。但是当我设置它们时,第二个总是覆盖第一个。这是我在下面使用的代码

                              res.setHeader('set-cookie', [
                                'x-authsession=' + cookieParsed['x-authsession']
                                 + '; Path=' + cookieParsed['Path'] + '; Expires='
                                + cookieParsed['Expires']
                                + `;  `, ]
                                );
                            


                            res.setHeader('set-cookie', [
                                'x-device=' + cookieParsed['x-device']
                                + '; Path=' + cookieParsed['Path'] + '; Expires='
                                + cookieParsed['Expires']
                                + `; `,
                            ]);

但只有 x-device 会存储在浏览器上。请问有人知道怎么解决吗?

【问题讨论】:

  • 你为什么不使用res.cookie()函数来设置多个cookie(通过多次调用)?
  • 如果对您有帮助,请考虑接受答案。

标签: javascript node.js express cookies


【解决方案1】:

您可以使用res.cookie,而不是显式修改set-cookie 标头。

res.cookie(
    'x-authsession',
    cookieParsed['x-authsession'],
    {
        path: cookieParsed['Path'],
        expires: cookieParsed['Expires']
    }
);
res.cookie(
    'x-device',
    cookieParsed['x-device'],
    {
        path: cookieParsed['Path'],
        expires: cookieParsed['Expires']
    }
);

另外,正如here所说,

要发送多个 cookie,应在同一个响应中发送多个 Set-Cookie 标头。

附带想法,您似乎正在尝试手动使用 会话 cookie。这不是一个好主意。而是在 npm 上查看 express-session 包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-05
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多