2011-11-06 89 views
6

我无法从我的socket.io授权中获取“cookie”数据。node.js + express.js + 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不可用?

+2

因为没有''中data.headers' cookie'财产... –

+1

我如何得到它那里:d – Danielss89

+0

你得到解决这个问题呢?我有个类似的问题。 – user482594

回答

0

关于socket.io和身份验证,请看this question。其实,真的是有a bunch关于这一主题:)

+1

但我做*应该*工作。它适用于我有的另一台服务器,但我不知道为什么它不能在此服务器上工作。 – Danielss89

0

难道你看看问题,没有任何的“cookie”头,像

cookie: sid=whatsoever 

我想什么是错的你的应用程序。 js配置文件。如果您未在应用程序根文件夹中使用命令$ express --sessions myApp创建应用程序,则在标题中不会有任何Cookie。

要确保你有饼干,尝试看看你的app.js配置:

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'))); 
}); 
1

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