【问题标题】:Why the sid i get from parsing the cookie with socket.io and the one from req.session.id using express are different?为什么我使用 socket.io 解析 cookie 得到的 sid 和使用 express 来自 req.session.id 的 sid 不同?
【发布时间】:2013-11-02 14:56:20
【问题描述】:

我的课程很奇怪。

从几周到今天,当我尝试从SessionStore(来自connect-mongo)获取会话时,回调返回undefined variables

我确实发送了一个好的 sid,它以这种方式工作了数周,并且会话系统工作,因为我可以从 req.session 访问存储的变量。

所以我想知道可能有 2 个不同的会话,有没有办法找到 req.session 的 sid ?

我不知道这是否正确,但我的 req.session.id 与我得到的 sid 不同

代码如下:

function parseSessionCookie(cookie, sid, secret) {
  var cookies = require('express/node_modules/cookie').parse(cookie)
, parsed = require('express/node_modules/connect/lib/utils').parseSignedCookies(cookies, secret)
;
  return parsed[sid] || null;
}
io.set('authorization', function(data, accept) {
    var sid = parseSessionCookie(data.headers.cookie, 'connect.sid', 'secret');
    SessionStore.get(sid, function(err, session) {
       //err and session are undefined!
    });
});

更新: 问题是我从req.session.id 得到的sid 和我从SessionStore 得到的是不同的! 因为如果我使用从req.session.id 获得的 sid 调用SessionStrore.get(),一切正常!

那么怎么可能有 2 个这样的不同会话呢?

【问题讨论】:

    标签: node.js session express socket.io


    【解决方案1】:

    好的,我明白了!

    事情是我在本地工作,在我的客户端代码中使用 URL http://127.0.0.1 在我的浏览器中连接 soket.io 和 http://localhost,所以它创建了一个跨域资源共享问题。

    我刚刚更改了http://localhost 的所有内容,它工作正常!

    【讨论】:

      猜你喜欢
      • 2015-02-04
      • 2014-12-08
      • 2014-10-24
      • 2017-01-09
      • 1970-01-01
      • 2016-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多