10

我以为我了解 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) 时,警报为空白。我究竟做错了什么?

谢谢

4

2 回答 2

10

Chrome 尊重的默认连接会话 cookie,httpOnly即客户端 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

于 2012-05-06T22:36:48.540 回答
0

你叫饼干对吗?我在学习时发现此页面很有帮助:

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

于 2012-05-06T22:28:50.773 回答