我正在使用带有Node的Express中的vhost功能来管理我的应用程序的多个子域。该应用程序使用相同的会话密钥和密钥,我相信我使用了正确的会话cookie设置:
cookie: {
path : '/',
domain : '.example.com',
httpOnly : false,
maxAge : 1000*60*60*24*30*12 //one year(ish)
}我在未定义子域的常规站点上设置了一个会话变量,例如http://example.com,如下所示:
req.session.rep_id = rep._id;
res.redirect('https://' + company.name + '.example.com/');但是,当我将它们重定向到subdomain.example.com时,会话并没有将rep_id键设置为任何值。看起来子域之间的会话正在被重置。我该如何解决这个问题呢?
发布于 2012-08-08 02:16:22
一些想法:
尝试从.example.com中删除句点。我在这里的想法是,您正在尝试设置一个仅限子域的cookie,而它仍然在根域上。我已经读到,在example.com上设置的cookies将在所有子域名上也可用。
尝试不要立即将用户重定向到子域,以首先验证cookie是否在您的根域上工作。检查来自您的服务器的响应头,然后查看您的浏览器是否在下一个请求中保留了cookie。只有当您确定这可以正常工作时,才能导航到子域。
发布于 2019-11-19 13:53:54
使用.save()方法,回调将确保设置cookie,然后重定向类似于-
req.session.rep_id = rep._id;
req.session.save(()=>{
res.redirect('https://' + company.name + '.example.com/');
})https://stackoverflow.com/questions/11850977
复制相似问题