2012-05-06 36 views
9

Tôi nghĩ rằng tôi đã hiểu cách thức Cookie hoạt động, nhưng tôi đoán không phải vì tôi bị kẹt sau đây:Cách truy cập cookie của khách hàng (với ID phiên) được tạo bởi node.js Express?

Tôi không thể hiển thị cookie với document.cookie, kiểm tra bằng cảnh báo (document.cookie); trong mã của tôi.

tôi đang chơi xung quanh với nút và đã đoạn mã mã theo dõi trên máy chủ của tôi (tác phẩm mọi thứ khác và phục vụ trang với 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')); 
    }); 

Mở máy chủ của tôi, tôi thấy một cookie được gửi đi khi tôi hit index.ejs. Chrome cũng hiển thị cookie được gửi trong tiêu đề trên index.ejs. Tuy nhiên, khi tôi thêm cảnh báo (document.cookie) vào trang index.ejs, cảnh báo sẽ trống. Tôi đang làm gì sai?

Cảm ơn

Trả lời

9

Các Connect cookie phiên mặc định để httpOnly mà khía cạnh Chrome, I.E. các cookie không thể truy cập được bằng javascript phía máy khách.

Cookie phiên không cần phải được đọc bởi javascript phía máy khách, trừ khi đó là tập lệnh XSS độc hại để mọi thứ đều tốt.

Nếu bạn muốn ghi đè lên nó, mặc dù thử:

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

Nguồn http://www.senchalabs.org/connect/session.html#session

+0

vậy làm thế nào có thể Node truy cập một cookie ký sau này trong ứng dụng? – vsync

+1

@vsync kết quả đầu tiên trên google cho "cookie đã ký" "req.signedCookies ['name']' – Esailija

+0

10x. tốt nhất là tất cả thông tin sẽ ở đây, ở một nơi, thay vì Google xấu xa :) nhưng khi tôi đọc một cookie được mã hóa đã ký, máy chủ có biết cách giải mã nó bằng cách sử dụng cùng một khóa không? – vsync

Các vấn đề liên quan