首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Express中跨子域的会话

问Express中跨子域的会话
EN

Stack Overflow用户
提问于 2012-08-08 01:20:52
回答 2查看 6.6K关注 0票数 10

我正在使用带有Node的Express中的vhost功能来管理我的应用程序的多个子域。该应用程序使用相同的会话密钥和密钥,我相信我使用了正确的会话cookie设置:

代码语言:javascript
复制
cookie: {
          path     : '/',
          domain   : '.example.com',
          httpOnly : false,
          maxAge   : 1000*60*60*24*30*12    //one year(ish)
        }

我在未定义子域的常规站点上设置了一个会话变量,例如http://example.com,如下所示:

代码语言:javascript
复制
req.session.rep_id = rep._id;
res.redirect('https://' + company.name + '.example.com/');

但是,当我将它们重定向到subdomain.example.com时,会话并没有将rep_id键设置为任何值。看起来子域之间的会话正在被重置。我该如何解决这个问题呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-08 02:16:22

一些想法:

尝试从.example.com中删除句点。我在这里的想法是,您正在尝试设置一个仅限子域的cookie,而它仍然在根域上。我已经读到,在example.com上设置的cookies将在所有子域名上也可用。

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

票数 4
EN

Stack Overflow用户

发布于 2019-11-19 13:53:54

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

代码语言:javascript
复制
req.session.rep_id = rep._id;
    req.session.save(()=>{
      res.redirect('https://' + company.name + '.example.com/');
    })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11850977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档