2011-11-06 104 views
6

我無法從我的socket.io授權中獲取「cookie」數據。node.js + express.js + socket.io授權:無Cookie

io.configure(function() { 
io.set('authorization', function (data, cb) { 
    console.log(data); 
    // data.headers.cookie <-- should be the cookie 
}); 
}); 

那麼它所打印的是:

{ headers: 
{ host: 'frisr.dk:1000', 
connection: 'keep-alive', 
origin: 'http://frisr.dk', 
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2', 
accept: '*/*', 
referer: 'http://frisr.dk/', 
'accept-encoding': 'gzip,deflate,sdch', 
'accept-language': 'da-DK,da;q=0.8,en-US;q=0.6,en;q=0.4', 
'accept-charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3' }, 
address: { address: '80.71.135.24', port: 53549 }, 
time: 'Sun Nov 06 2011 22:34:12 GMT+0000 (UTC)', 
query: { t: '1320610986125' }, 
url: '/socket.io/1/?t=1320610986125', 
xdomain: true, 
secure: undefined, 
issued: 1320618852796 } 

,你可以在這裏檢查代碼: http://frisr.dk

爲什麼該cookie不可用?

+2

因爲沒有''中data.headers' cookie'財產... –

+1

我如何得到它那裏:d – Danielss89

+0

你得到解決這個問題呢?我有個類似的問題。 – user482594

回答

0

關於socket.io和身份驗證,請看this question。其實,真的是有a bunch關於這一主題:)

+1

但我做*應該*工作。它適用於我有的另一臺服務器,但我不知道爲什麼它不能在此服務器上工作。 – Danielss89

0

難道你看看問題,沒有任何的「cookie」頭,像

cookie: sid=whatsoever 

我想什麼是錯的你的應用程序。 js配置文件。如果您未在應用程序根文件夾中使用命令$ express --sessions myApp創建應用程序,則在標題中不會有任何Cookie。

要確保你有餅乾,嘗試看看你的app.js配置:

app.configure(function(){ 
    app.set('port', process.env.PORT || 8080); 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.use(express.favicon()); 
    app.use(express.logger('dev')); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    //this snippet here 
    app.use(express.cookieParser('your secret here')); 
    app.use(express.session()); 
    //end of snippet 
    app.use(app.router); 
    app.use(require('less-middleware')({ src: __dirname + '/public' })); 
    app.use(express.static(path.join(__dirname, 'public'))); 
}); 
1

cookie不會beeing握手請求期間設置。 可能cookie已經設置爲不同的服務器/域,這就是爲什麼你的第二臺服務器上存在你的數據對象。檢查cookie是否正在爲此域設置爲螢火蟲。