2012-05-06 26 views
9

Pomyślałem, że rozumiem, jak działają pliki cookie, ale chyba nie, ponieważ utknąłem w następujących słowach:Jak uzyskać dostęp do cookie klienta (z identyfikatorem sesji) utworzonym przez plik node.js Express?

Nie mogę wyświetlić pliku cookie z plikiem document.cookie, testowanie za pomocą alertu (document.cookie); w moim kodzie.

jestem zabawy z węzła i mają następujące fragment kodu na mój serwer (wszystko działa indziej i obsługujących strony z Express):

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')); 
    }); 

na moim serwerze, widzę cookie są wysyłane, kiedy hit index.ejs. Chrome pokazuje również plik cookie wysyłany w nagłówku w pliku index.ejs. Jednak po dodaniu alertu (document.cookie) na stronie index.ejs alert jest pusty. Co ja robię źle?

Dzięki

Odpowiedz

9

Połącz sesyjne domyślnych do httpOnly które szanuje Chrome, to znaczy pliki cookie są niedostępne po stronie klienta javascript.

Plik cookie sesji nie musi być odczytywany przez javascript po stronie klienta, chyba że jest to złośliwe skrypty XSS, więc wszystko jest w porządku.

Jeśli chcesz zastąpić go jednak, spróbuj:

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

Źródło http://www.senchalabs.org/connect/session.html#session

+0

tak jak można węzła dostępowego podpisany cookies później w aplikacji? – vsync

+1

@vsync pierwszy wynik w google dla "podpisanego pliku cookie" 'req.signedCookies ['name']' – Esailija

+0

10x. najlepiej, żeby wszystkie informacje były tutaj, w jednym miejscu, zamiast złego Google'a :) ale kiedy czytam podpisany zaszyfrowany plik cookie, czy serwer wie, jak odszyfrować go za pomocą tego samego klucza? – vsync

Powiązane problemy