socket node cookies node.js socket.io

autorización de node.js+express.js+socket.io: sin cookies



socket io node js express (4)

Tengo problemas para obtener los datos de "cookies" de mi autorización de socket.io.

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

Entonces, lo que imprime es:

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

puedes consultar el código aquí: http://frisr.dk

¿Por qué la cookie no está disponible?


¿Echa un vistazo, no hay ningún encabezado de "cookie", algo así como

cookie: sid=whatsoever

Supongo que algo está mal en el archivo de configuración de tu app.js. Si no creó su aplicación con el comando $ express --sessions myApp en la carpeta raíz de la aplicación, no tendrá ninguna cookie en los encabezados.

Para asegurarse de que tiene cookies, intente ver su configuración de 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''))); });


La cookie no se establece durante la solicitud de protocolo de enlace. Probablemente, la cookie ya está configurada para diferentes servidores / dominios y es por eso que en su segundo servidor existe en su objeto de datos. Verifique si se está estableciendo la cookie para este dominio en firebug ot smth.


Echa un vistazo a tu anfitrión. ¿A qué se está conectando su cliente? Estaba teniendo un problema con expressjs 3. * y Socket.io también, pero estaba enviando a mi cliente a conectarse como:

io.connect(127.0.0.1);

En lugar de

io.connect(''localhost'');

Ahora, hackear juntos la nueva y encantadora rutina de análisis sintáctico.

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


Eche un vistazo a esta pregunta sobre socket.io y autenticación. En realidad, realmente hay un montón de preguntas sobre este tema :)