如何在 NodeJs 中使用 setHeader 设置多个 cookie

How to set multiple cookies with setHeader in NodeJs

我一直在做一个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 设备存储在浏览器上。有人知道如何解决这个问题吗?

您可以使用 res.cookie.

而不是显式修改 set-cookie header
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

To send multiple cookies, multiple Set-Cookie headers should be sent in the same response.

侧面想法,看起来您正在尝试手动使用 session cookies。这不是一个好主意。而是在 npm 上签出 express-session 包。

这对我来说很好用:

res.setHeader("Set-Cookie", 
    [
    cookie.serialize("cookie1", "data1"),
    cookie.serialize("refreshToken", refreshToken)
    ]
)
res.end()