10

我正在使用 Express with Node 中的 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 键设置为任何内容。似乎会话正在子域之间重置。我该如何解决这个问题?

4

2 回答 2

4

一些想法:

尝试从.example.com. 我的想法是,您正在尝试设置仅子域的 cookie,同时仍在根域上。我已经读过设置的 cookieexample.com也将在所有子域上可用。

尝试不要立即将用户重定向到子域,以首先验证 cookie 是否在您的根域上工作。检查服务器的响应标头,然后查看浏览器是否在下一个请求中保留了 cookie。仅当您确定它正常工作时才导航到子域。

于 2012-08-07T18:16:21.827 回答
0

使用 .save() 方法,回调将确保设置 cookie 然后重定向类似的东西 -

req.session.rep_id = rep._id;
    req.session.save(()=>{
      res.redirect('https://' + company.name + '.example.com/');
    })
于 2019-11-19T05:53:53.587 回答