2012-05-06 16 views
9

creí entender cómo funcionaban las cookies, pero supongo que no, ya que estoy atascado en lo siguiente:Cómo acceder a la cookie del cliente (con ID de sesión) creada por node.js Express?

no puedo mostrar una cookie con document.cookie, las pruebas con alerta (document.cookie); en mi código

estoy jugando un poco con nodo y tienen el siguiente fragmento de código en mi servidor (todo lo demás funciona y sirviendo páginas con expreso):

var express = require('express') 
, util = require('util') 
, MemoryStore = express.session.MemoryStore 
, app = express.createServer() 
, sessionStore = new MemoryStore(); 

app.configure(function() { 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'ejs'); 
    app.use(express.logger()); 
    app.use(express.cookieParser()); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(express.session({ 
      store: sessionStore, 
      secret: 'BBQ12345AHHH', 
      key: 'cookie.sid' })); 
    app.use(app.router); 
    app.use(express.static(__dirname + '/public')); 
    }); 

En mi servidor, que veo una cookie que se envían cuando golpear index.ejs. Chrome también muestra una cookie que se envía en el encabezado en index.ejs. Sin embargo, cuando agrego alerta (document.cookie) en la página index.ejs, la alerta está en blanco. ¿Qué estoy haciendo mal?

Gracias

Respuesta

9

El Conectar cookies de sesión predeterminado a httpOnly que respeta Chrome, es decir, las cookies son inaccesibles por javascript del lado del cliente.

Una cookie de sesión no necesita ser leída por javascript del lado del cliente, a menos que sea por scripts XSS maliciosos, así que todo está bien.

Si quieres anularlo sin embargo, tratar:

app.use(express.session({ 
    store: sessionStore, 
    secret: 'BBQ12345AHHH', 
    cookie: {httpOnly: false}, 
    key: 'cookie.sid' }   
)) 

Fuente http://www.senchalabs.org/connect/session.html#session

+0

así que ¿cómo puede nodo de acceso de una galleta firmado más adelante en la aplicación? – vsync

+1

@vsync primer resultado en google para "cookie firmada" 'req.signedCookies ['name']' – Esailija

+0

10x. es mejor que toda la información esté aquí, en un solo lugar, en lugar del maligno Google :) pero cuando leo una cookie cifrada y firmada, ¿el servidor sabe cómo descifrarla usando la misma clave? – vsync

Cuestiones relacionadas