【问题标题】:expressjs sessions not working across subdomainsexpressjs 会话不能跨子域工作
【发布时间】:2017-01-17 07:39:07
【问题描述】:

我在 express 中使用会话并将其设置为:

app.use(session({
  store: new RedisStore(),
  secret : '',
  cookie: {
    path: '/',
    domain: '.localdomain.com'
  },
  resave: false,
  saveUninitialized: false
}));

然后我的主机中有localdomain.com 以及test.localdomain.com,当我通过test.localdomain.com 访问路由时,我能够获取会话数据,但是当我向localdomain.com 发出ajax 请求时,这不会没有可用的会话。比如test.localdomain.com,我会提出一个请求:

$.get('http://localdomain.com/session') 并且会话在那里,但没有返回我为会话设置的值。

任何想法如何访问会话?

【问题讨论】:

    标签: node.js session express


    【解决方案1】:

    从 express 会话源代码看来,它使用了 indexOf,它不允许使用正则表达式,因此不能选择正则表达式和数组,

    // pathname mismatch
    var originalPath = parseUrl.original(req).pathname;
    if (originalPath.indexOf(cookieOptions.path || '/') !== 0) return next();
    

    恕我直言,最好的选择是编写自己的会话或使用令牌,希望对我有所帮助。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      • 2013-01-11
      • 2013-02-24
      • 2014-09-25
      • 2014-05-10
      • 2017-11-22
      • 2013-04-16
      相关资源
      最近更新 更多