2017-06-07 95 views
1

我有一个Express 4.x版应用程序,我通过一个cookie的浏览器覆盖/更新浏览器cookie

res.cookie('foo','bar1', {maxAge:99999999999}); 

它在遥远的未来到期。但是,5分钟后,我收到了来自同一用户的另一个请求,我想给他们一个新的cookie。

res.cookie('foo','bar2', {maxAge:99999999999}); 

从我的调试,它看起来像新的cookie不会覆盖旧的cookie?是这样吗? 如何更新/覆盖旧的cookie与新的?

+0

它看起来像从这里:https://www.npmjs.com/package/cookies –

+0

,我应该使用{overwrite:true} –

回答

0

我约99%肯定,使用{overwrite: true}属性将做的伎俩 - 从这里开始:

https://www.npmjs.com/package/cookies

它说:

cookies.set(名称,[值],[options])这会在响应中设置给定的Cookie ,并返回当前上下文以允许链接。

如果该值被省略,则带有过期日期的出站标头为 ,用于删除cookie。

如果提供的选项对象,它会被用于生成出站 cookie头如下:

MAXAGE:表示从Date.now()的毫秒 期满若干过期:Date对象指示cookie的到期日期 (默认在会话结束时过期)。 ... overwrite:一个布尔值 ,指示是否覆盖先前设置的名称相同的 的cookie(默认为false)。如果这是真的,则在设置此cookie时,在 具有相同名称(无论路径或域)的相同请求期间设置的所有Cookie是 被过滤出Set-Cookie头。

因此,这将是在Node.js的快递说法:

res.cookie('cdt_app_token', encoded, {maxAge: 90000000, httpOnly: true, secure: false, overwrite: true}); 

注意,如果你使用的是非SSL或TLS无连接,饼干可能无法使用安全是真实的工作。