节点快递,注销后如何清除cookie

基本上我从a.example.comredirect到www.example.com,我希望能够删除www.example.com上的cookie(因为cookie是以.example.com作为cookie域创build的),但是以下代码不起作用。

我知道这个问题似乎是重复的问题,我尝试了类似的问题的一切,但它不工作。 看到代码后, 我已经尝试过

使用快速3.0.3和节点0.10.32。

快速会话中间件

... var cookiedata = { domain : '.example.com', originalMaxAge : null, httpOnly : false }; app.use(express.session({ store : ..., secret : ..., key : 'express.sid', cookie : cookiedata })); ... 

注销function

 function logout(req, res){ ... req.session.destroy(function(){ req.session = null; res.clearCookie('express.sid', { path: '/' }); res.redirect('https://www.example.com'); }); } 

我已经尝试过类似的问题

  1. https://github.com/strongloop/express/issues/691

所以我把path : '/'在快速会话中间件,如:

 app.use(express.session({ ..., path : '/' }); 

没有成功。

  1. https://groups.google.com/forum/#!topic/express-js/PmgGMNOzhgM
    而res.clearCookie我使用:res.cookie('express.sid','',{expires:new Date(1),path:'/'});

没有成功。

这是Express.JS的response.clearCookie(文件response.js,在第749行)。

 var opts = merge({ expires: new Date(1), path: '/' }, options); return this.cookie(name, '', opts); 

如果你在这一行设置了一个断点,你将会看到在一个无效的date报到了过期。 所以,而不是使用response.clearCookie,只是使它像这样立即过期。

 response.cookie("express.sid", "", { expires: new 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('/'); });