2012-05-06 5 views
9

私はクッキーの仕組みを理解していると思っていましたが、私は以下のことに気をつけていません。node.js Expressによって作成されたクライアント・クッキー(セッションID付き)にアクセスする方法は?

alert(document.cookie)でテストすると、document.cookieでクッキーを表示できません。私のコードで。

私はノードで遊んで、次のコードを持っていますが、私のサーバー(他のすべて作品と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')); 
    }); 

、私は送信されているクッキーを見ますヒットindex.ejs。 Chromeでは、index.ejsのヘッダーにCookieが送信されていることも表示されます。ただし、index.ejsページのアラート(document.cookie)を追加すると、アラートは空白になります。私は間違って何をしていますか?

ありがとうございました

答えて

9

をクロムが尊重httpOnlyへの接続セッションクッキーのデフォルト、つまり:私が学んでいたとき、私は、このページが役に立ったと評価していクッキーはクライアント側のjavascriptによってアクセスできません。

セッションクッキーは、悪意のあるXSSスクリプトでない限り、クライアントサイドのJavaScriptで読む必要はありません。

あなたがしよう、しかしそれを上書きしたい場合:

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

ソースhttp://www.senchalabs.org/connect/session.html#session

+0

ので、どのようにアプリに署名したクッキー以降のアクセスをノードができますか? – vsync

+1

@vsync "signed cookie"のreq.signedCookies ['name'] ' – Esailija

+0

10倍のgoogleの最初の結果。一番良いのは、悪意のあるGoogleの代わりにすべての情報がここにあります:)しかし、暗号化された暗号化されたCookieを読むと、サーバは同じ鍵を使って復号化する方法を知っていますか? – vsync

関連する問題