销毁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);
并删除cookie:
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: '/' });
希望这可以帮助!!!