如何访问node.js Express创建的客户端cookie(带会话ID)?

时间:2012-05-06 22:24:02

标签: javascript node.js cookies express

我以为我理解了Cookies是如何工作的,但我想不会因为我被困在以下方面:

我无法使用document.cookie显示cookie,使用alert进行测试(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时,我看到一个cookie被发送。 Chrome还会在index.ejs的标头中显示一个Cookie。但是,当我在index.ejs页面中添加alert(document.cookie)时,警报为空。我做错了什么?

由于

2 个答案:

答案 0 :(得分:9)

Connect会话Cookie默认为Chrome尊重的httpOnly,I.E。客户端javascript无法访问cookie。

客户端javascript不需要读取会话cookie,除非是恶意的XSS脚本,所以这一切都很好。

如果你想覆盖它,请尝试:

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

来源http://www.senchalabs.org/connect/session.html#session

答案 1 :(得分:0)

你正在调用cookie吗?我在学习时发现此页面很有用:

http://www.quirksmode.org/js/cookies.html