node.js + express.js + socket.io授权:没有cookie

我无法从我的socket.io授权中获取“cookie”数据。

io.configure(function() { io.set('authorization', function (data, cb) { console.log(data); // data.headers.cookie <-- should be the cookie }); }); 

所以它打印的是:

 { headers: { host: 'frisr.dk:1000', connection: 'keep-alive', origin: 'http://frisr.dk', 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2', accept: '*/*', referer: 'http://frisr.dk/', 'accept-encoding': 'gzip,deflate,sdch', 'accept-language': 'da-DK,da;q=0.8,en-US;q=0.6,en;q=0.4', 'accept-charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3' }, address: { address: '80.71.135.24', port: 53549 }, time: 'Sun Nov 06 2011 22:34:12 GMT+0000 (UTC)', query: { t: '1320610986125' }, url: '/socket.io/1/?t=1320610986125', xdomain: true, secure: undefined, issued: 1320618852796 } 

你可以查看这里的代码: http : //frisr.dk

为什么cookie不可用?

在你的主人有一个雄性。 你的客户连接到什么? 我有expressjs 3. *和Socket.io的问题,但我发布我的客户端连接为:

io.connect(127.0.0.1);

代替

io.connect('localhost');

现在来一起讨论可爱的新的parsing程序。

https://groups.google.com/forum/?fromgroups=#!topic/express-js/II3eIM9HHQY

cookie在握手请求期间不会被设置。 可能cookie已经设置为不同的服务器/域,这就是为什么你的第二个服务器上它存在于你的数据对象。 检查cookie是否被设置为在这个域名的萤火虫。

看看这个关于so​​cket.io和authentication的问题。 其实,这个话题真的有很多问题:)

你看了一下,没有任何“cookie”头像,就像

 cookie: sid=whatsoever 

我猜你的app.jsconfiguration文件有问题。 如果您没有使用应用程序根文件夹中的$ express --sessions myApp命令创build应用程序,则在标题中不会有任何Cookie。

为了确保你有cookie,试着看看你的app.jsconfiguration:

 app.configure(function(){ app.set('port', process.env.PORT || 8080); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); //this snippet here app.use(express.cookieParser('your secret here')); app.use(express.session()); //end of snippet app.use(app.router); app.use(require('less-middleware')({ src: __dirname + '/public' })); app.use(express.static(path.join(__dirname, 'public'))); });