我正在使用Cookies模块来设置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);
Run Code Online (Sandbox Code Playgroud)
但在文档中我还没有找到如何销毁这个cookie.
任何建议将不胜感激.
vas*_*shu 85
对于webapp,您可以将响应中的cookie设置为:
res.cookie("key", value);
Run Code Online (Sandbox Code Playgroud)
并删除cookie:
res.clearCookie("key");
Run Code Online (Sandbox Code Playgroud)
Roe*_*den 20
根据HTTP规范无法删除cookie.要有效地"删除"cookie,请将过期日期设置为过去的某个日期.从本质上讲,这将导致以下内容(根据cookie模块文档):
cookies.set('testtoken', {maxAge: Date.now()});
Run Code Online (Sandbox Code Playgroud)
或者根据HTTP规范:
cookies.set('testtoken', {expires: Date.now()});
Run Code Online (Sandbox Code Playgroud)
两者都应该有效.您可以替换Date.now()与new Date(0)一个真正的老日期.
虽然另一个答案是正确的,但是通过调用以下方法来从express.js webapp中删除cookie:
res.clearCookie("key");
您的cookie选项(过期除外)需要与设置时相同.否则浏览器不会删除cookie.所以使用相同的域名,安全设置等(参考:https://expressjs.com/en/4x/api.html#res.clearCookie)
我正在使用这个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('/');
});
Run Code Online (Sandbox Code Playgroud)
小智 7
要删除任何http cookie,如果我们只是尝试从响应[使用res.clearCookie("key")] 清除它,它绝对不会起作用.实际上,要删除http cookie,域和路径都非常重要.
域和路径定义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: '/' });
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!!!
几天前我遇到了同样的问题。和朋友讨论后,我认为这是最好的解决方案。
res.setHeader('set-cookie', 'mycookie=; max-age=0');
Run Code Online (Sandbox Code Playgroud)
好处:
学分:@andy
小智 5
我cookie-parser也在使用,上面的答案引导我找到解决方案。在我的情况下,我也需要添加overwrite: true,否则添加了新的 cookie 密钥。
所以我的最终解决方案如下:
res.cookie('cookieName', '', {
domain: 'https://my.domain.com',
maxAge: 0,
overwrite: true,
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60693 次 |
| 最近记录: |