2011-11-06 23 views
6

Tengo problemas para obtener los datos de "cookie" de mi autorización de socket.io.node.js + express.js + autorización de socket.io: sin cookie

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

Así que lo que se 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 } 

se puede comprobar el código aquí: http://frisr.dk

¿Por qué es la cookie no está disponible?

+2

Porque no hay '' propiedad cookie' en data.headers' ... –

+1

cómo consigo allí: D – Danielss89

+0

¿Recibió para resolver este problema? Estoy teniendo un problema similar. – user482594

Respuesta

0

Eche un vistazo a this question con respecto a socket.io y autenticación. En realidad, no hay realmente a bunch de preguntas sobre este tema :)

+1

Pero lo que hago * debería * funcionar. Funciona en otro servidor que tengo, pero no tengo idea de por qué no funciona en este servidor. – Danielss89

0

¿Tomó un vistazo, no hay ninguna "cookie" de cabecera, algo así como

cookie: sid=whatsoever 

supongo que algo anda mal en ti aplicación. archivo de configuración js Si no creó su aplicación utilizando 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 las cookies, tratar de mirar a su configuración 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 no es beeing establece durante la solicitud de apretón de manos. 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.

7

Eche un vistazo a su anfitrión. ¿A qué se está conectando su cliente? Estaba teniendo un problema con expressjs 3. * y Socket.io así, pero yo estaba dando mi cliente para conectarse como:

io.connect(127.0.0.1);

En lugar de

io.connect('localhost');

Ahora piratear juntos la encantadora nueva rutina de análisis.

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

+0

me salvaste la vida :) –

+0

y mía, gracias – mdikici

Cuestiones relacionadas