簡體   English   中英

如何在 NodeJs 中使用 setHeader 設置多個 cookies

[英]How to set multiple cookies with setHeader in NodeJs

我一直在做一個node.js的項目,我需要設置兩個不同的cookies。但是當我設置它們時,第二個總是覆蓋第一個。 這是我在下面使用的代碼

                              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而不是顯式修改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']
    }
);

另外,正如這里所說,

要發送多個 cookies,應在同一響應中發送多個 Set-Cookie 標頭。

側面想法,看起來您正在嘗試手動使用session cookies 這不是一個好主意。 相反,請在 npm 上查看express-session package。

這對我來說很好用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM