基本上我正在从a.example.com重定向到www.example.com,我希望能够在www.example.com上删除cookie(因为cookie是使用.example.com作为cookie域创建的),但以下代码不起作用。
我知道这个问题似乎是重复的问题,我尝试了类似问题的一切,但它不起作用。请参阅代码我已经尝试过的内容。
使用express 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 logout(req, res){
...
req.session.destroy(function(){
req.session = null;
res.clearCookie('express.sid', { path: '/' });
res.redirect('https://www.example.com');
});
}
我已经尝试过类似问题
所以我把path : '/'
放在快递会话中间件中,例如:
app.use(express.session({ ..., path : '/' });
没有成功。
没有成功。
答案 0 :(得分:9)
这是Express.JS的response.clearCookie(第749行的文件response.js)。
var opts = merge({ expires: new Date(1), path: '/' }, options);
return this.cookie(name, '', opts);
如果在此行设置断点,您将看到在无效日期报告过期。所以不要使用response.clearCookie,而是让它像这一样立即过期。
response.cookie("express.sid", "", { expires: new Date() });
答案 1 :(得分:2)
这对我来说是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('/');
});
答案 2 :(得分:1)
对我有用的是在 res.clearCookie 中添加 path 和 domain
res.clearCookie(<cookie-name>, {path: '/', domain: <domain-on-which-cookie-is-set>}
此外,请确保在前端包含凭据,否则不会随请求发送 cookie。如果没有 cookie 到达服务器,则无需清除!
fetch('url.com', {credentials: "include"}