2012-05-06 6 views
9

मैंने सोचा था कि मैं समझ कैसे कुकीज़ काम किया, लेकिन मैं नहीं लगता है के बाद से मैं निम्नलिखित पर अटक कर रहा हूँ:node.js एक्सप्रेस द्वारा बनाए गए क्लाइंट कुकी (सत्र आईडी के साथ) तक कैसे पहुंचे?

मैं document.cookie के साथ कुकी प्रदर्शित नहीं कर सकता, चेतावनी (document.cookie) के साथ परीक्षण; मेरे कोड में

मैं नोड के साथ चारों ओर खेल रहा हूँ और निम्नलिखित कोड अपने सर्वर पर झलकी है (एक्सप्रेस के साथ सब कुछ किसी और काम करता है और की सेवा पृष्ठों):

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। क्रोम index.ejs पर शीर्षलेख में भेजी जाने वाली कुकी भी दिखाता है। हालांकि, जब मैं index.ejs पृष्ठ में अलर्ट (document.cookie) जोड़ता हूं, तो अलर्ट खाली होता है। मैं क्या गलत कर रहा हूं?

धन्यवाद

उत्तर

9

कनेक्ट सत्र कुकीज़ डिफ़ॉल्ट httpOnly को जो क्रोम सम्मान है, अर्थात: जब मैं सीख रही थी मैं इस पृष्ठ उपयोगी पाया कुकीज़ क्लाइंट साइड जावास्क्रिप्ट द्वारा पहुंच योग्य नहीं हैं।

क्लाइंट साइड जावास्क्रिप्ट द्वारा सत्र सत्र को पढ़ने की आवश्यकता नहीं है, जब तक कि यह दुर्भावनापूर्ण XSS स्क्रिप्ट्स द्वारा न हो, तो यह सब अच्छा है।

आप हालांकि यह ओवरराइड करना चाहते हैं, तो कोशिश:

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 Google पर "हस्ताक्षरित कुकी" के लिए पहला परिणाम 'req.signedCookies [' name '] ' – Esailija

+0

10x। यह सबसे अच्छी बात है कि एक ही स्थान पर, बुराई Google की बजाय सभी जानकारी यहां होगी :) लेकिन जब मैं एक हस्ताक्षरित एन्क्रिप्टेड कुकी पढ़ता हूं, तो क्या सर्वर जानता है कि उसी कुंजी का उपयोग करके इसे कैसे डिक्रिप्ट करना है? – vsync