Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
252 views
in Technique[技术] by (71.8m points)

node在服务端设置多个cookies?

方案一:

缺点:不能设置过期时间,和domain

  res.setHeader('Set-Cookie', [ `uid=${uid}`,  accessToken=${accessToken}`,`sdktoken=${sdktoken}`]);

方案二:

缺点:只能设置一个,最后一个才生效,uid注入不了

import cookie from 'cookie'

 function setCookies(key,value){
      if(!value){
          return;
      }
      res.setHeader('Set-Cookie', cookie.serialize(key, String(value), {
        httpOnly: true,
        maxAge: 60 * 60 * 24 * 7, // 1 week
        domain:'.xx.com'
      }));
    }

  setCookies('uid','11');
 
   setCookies('accessToken','22');

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

这样即可

  const expiredays = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 29;
    const exdate = new Date();
    exdate.setDate(exdate.getDate() + expiredays);

    const expiresValue=`;expires=${exdate.toUTCString()};domain=.xx.com;path=/`;

    res.setHeader('Set-Cookie', [ `uid=${uid}${expiresValue}`,  `accessToken=${accessToken}${expiresValue}`,`sdktoken=${sdktoken}${expiresValue}`]);
   

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...