2016-11-14 92 views
0

我有一個死簡單的HTTP的NodeJS服務器:鉻只設置從「設置Cookie」標題的第一個cookie

require('http').createServer(function(req, res) { 
    res.statusCode = 200; 
    res.setHeader('Set-Cookie', 'age=44; name=ok; something=else; path=/'); 
    res.end('ok ok ok', 'utf8'); 
}).listen(9999); 

在訪問Chrome瀏覽器的最新版本的頁面,這些發送的響應頭從服務器:

server response headers

因此,服務器發送正確的Cookie。但是,瀏覽器似乎只存儲第一個(age=44)。如果我再刷新頁面,這些請求頭被髮送到服務器:

server request headers

只有第一個Cookie(age=44)被髮送。在控制檯中記錄document.cookie也只返回'age=44'

當檢查從Chrome的用戶界面的餅乾,我還可以看到,只有第一個保存:

這裏有什麼問題嗎?

chrome ui cookies

回答

1

如果你僅僅使用香草節點,那麼你可以簡單地傳遞一個數組作爲第二個參數來res.setHeader(field, value)

res.setHeader('Set-Cookie', [ 
    'age=44; path=/', 
    'name=ok; path=/', 
    'something=else; path=/' 
]) 

如果使用快速4.11.0+您可以使用res.append(field [, value])

res.append('Set-Cookie', 'age=44; path=/'); 
res.append('Set-Cookie', 'name=ok; path=/'); 
res.append('Set-Cookie', 'something=else; path=/'); 
+0

謝謝!我只是看着節點文檔,看起來如果你嘗試用'res.setHeader'多次設置相同的頭文件,那麼只會使用最後一個頭文件。感謝您提及數組方法。 –