5

I'm having trouble getting the "cookie" data from my socket.io authorization.

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

So what it prints is:

{ 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 }

you can check the code out here: http://frisr.dk

Why is the cookie not available?

Danielss89
  • 863
  • 1
  • 11
  • 17

4 Answers4

7

Have a gander at your host. What is your client connecting to? I was having an issue with expressjs 3.* and Socket.io as well, but I was issuing my client to connect as:

io.connect(127.0.0.1);

Instead of

io.connect('localhost');

Now to hack together the lovely new parsing routine.

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

user1835017
  • 353
  • 3
  • 10
1

Cookie is not beeing set during handshake request. Probably cookie is already set for different server/domain and thats why on your second server it exists in your data object. Check if cookie is beeing set for this domain in firebug ot smth.

nethead
  • 480
  • 3
  • 10
0

Did you take a look, there isn't any "cookie" header, something like

cookie: sid=whatsoever

I guess something's wrong in you app.js configuration file. If you did not create your app using the command $ express --sessions myApp in the app root folder, you won't have any cookie in the headers.

To make sure you have cookies, try to look at your app.js configuration:

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')));
});
ace
  • 7,293
  • 3
  • 23
  • 28
Tom
  • 1
0

Take a look at this question regarding socket.io and authentication. Actually, there is really a bunch of questions on this topic :)

Community
  • 1
  • 1
Adrian Heine
  • 4,051
  • 2
  • 30
  • 43
  • 1
    But what i do *should* work. It works on another server i have, but i have no idea on why it doesnt work on this server. – Danielss89 Nov 07 '11 at 09:08