10

私はCookieがどのように機能するかを理解していると思いましたが、私は次のことに固執しているので、そうではないと思います。

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

Connect セッション Cookie のデフォルトはhttpOnly、Chrome が尊重するものです。つまり、Cookie はクライアント側の JavaScript からアクセスできません。

セッション Cookie は、悪意のある XSS スクリプトによるものでない限り、クライアント側の JavaScript で読み取る必要がないため、問題ありません。

ただし、それをオーバーライドしたい場合は、次を試してください。

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 に答える