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是否被设置为在这个域名的萤火虫。
看看这个关于socket.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'))); });