Io uso il sotto per impostare un cookie utilizzando express.Node.js ed express - come leggere un cookie ma non è definito
res.cookie('test', 'yes', {
expires: new Date(Date.now() + 365*2*24*60*60*1000),
httpOnly: true
});
Sto usando il middleware per cercare di leggere il cookie:
app.use(express.cookieParser());
var cookie_id = req.cookies.test;
Il problema è che cookie_id è indefinito whne sarebbe 'sì'
Express server listening on port 8060 in development mode
TypeError: Cannot read property 'test' of undefined
at /home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/nodeServer/app.js:48:29
at callbacks (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/nodeServer/node_modules/express/lib/router/index.js:272:11)
at param (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/nodeServer/node_modules/express/lib/router/index.js:246:11)
at pass (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/nodeServer/node_modules/express/lib/router/index.js:253:5)
at Router._dispatch (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/nodeServer/node_modules/express/lib/router/index.js:280:4)
at Object.handle (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/nodeServer/node_modules/express/lib/router/index.js:45:10)
at next (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/nodeServer/node_modules/express/node_modules/connect/lib/http.js:204:15)
at Object.methodOverride [as handle] (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/nodeServer/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js:35:5)
at next (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/nodeServer/node_modules/express/node_modules/connect/lib/http.js:204:15)
at Object.bodyParser [as handle] (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/nodeServer/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js:88:61)
cosa ho fatto sbagliato?
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection keep-alive
Cookie test=yes
Host 127.0.0.1:8060
User-Agent Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0
// Configuration
app.configure(function() {
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
app.use(express.cookieParser());
});
si può utilizzare Fiddler/Firebug o Google Chrome, e vedere se viene passato il cookie al percorso (dove stai controllando il cookie). (Chekc le intestazioni HTTP della richiesta HTTP). Aggiornamento: il cookie viene impostato correttamente e viene passato. Quindi è solo che il middleware potrebbe non essere nel modo corretto ..... Puoi controllare se l'app.use (express.cookieParser()); è prima della linea che definisce l'app.get (dove stai controllando il cookie)? Stai definendo l'app.use (cookieparser) all'interno della definizione del percorso di acquisizione? –
Ciao, ho aggiunto le intestazioni di Firebug. – Tampa
Ciao ... Ho aggiunto il codice dove aggiungo il parser dei cookie. nella sezione app.configure – Tampa