销毁cookie的NodeJs

我正在使用Cookie模块来设置Cookie。 以下是我的代码:

var options = { maxAge: ALMOST_ONE_HOUR_MS, domain: '.test.com', expires: new Date(Date.now() + ALMOST_ONE_HOUR_MS) }; var value = userInfo.token; cookies.set( "testtoken", value, options ); 

但在文档中,我还没有find如何销毁这个cookie。

任何build议,将不胜感激。

对于web应用程序,您可以将cookie设置为:

 res.cookie("key", value); 

并删除co​​okie:

 res.clearCookie("key"); 

根据HTTP规范,无法删除cookie。 要有效地“删除”cookie,您需要将过期date设置为过去的某个date。 基本上,这将导致以下为您(根据cookies模块文件):

 cookies.set('testtoken', {maxAge: Date.now()}); 

或者根据HTTP规范:

 cookies.set('testtoken', {expires: Date.now()}); 

两者都应该工作。 您可以将Date.now()replace为new Date(0)以获取真正的旧date。

我正在使用cookie-parser模块:

 router.get('/logout', function(req, res){ cookie = req.cookies; for (var prop in cookie) { if (!cookie.hasOwnProperty(prop)) { continue; } res.cookie(prop, '', {expires: new Date(0)}); } res.redirect('/'); }); 

虽然另一个答案是正确的,但通过调用以下方法从express.js webapp中删除一个cookie:

res.clearCookie("key");

但有一个警告!

您的Cookie选项(除期满)需要与设置时相同。 否则,浏览器将不会删除该cookie。 所以使用相同的域名,安全设置等(参考: https : //expressjs.com/en/4x/api.html#res.clearCookie )

要删除任何http cookie,如果我们试图从响应中清除它[使用res.clearCookie("key") ],它肯定不会工作。 实际上,要删除http cookie,域和path是非常重要的。

域和path定义了Cookie的范围。 面对面,他们基本上告诉浏览器该cookie属于哪个网站。 发送相同的cookie值; 附加expires也是一个坏主意,因为你想要的内容被破坏,但是这不会发生。

最好的办法是通过将该值设置为空来使cookie无效,并包含一个expires字段,如下所示:

 res.cookie("key","empty the key content", {expires:old date, domain:'.example.com', path:'/'}); res.cookie("token", "", { expires: new Date(0),domain:'.test.com', path: '/' }); 

希望这可以帮助!!!