2016-11-14 70 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'多次设置相同的头文件,那么只会使用最后一个头文件。感谢您提及数组方法。 –