如何在 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()
我一直在做一个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()