Node.js Chrome仅设置';设置Cookie';标题
我有一个非常简单的http nodejs服务器:Node.js Chrome仅设置';设置Cookie';标题,node.js,google-chrome,http,cookies,http-headers,Node.js,Google Chrome,Http,Cookies,Http Headers,我有一个非常简单的http nodejs服务器: 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中访问页面时,以下是
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中访问页面时,以下是从服务器发送的响应头:
因此,服务器发送正确的cookie。但是,浏览器似乎只存储第一个(age=44
)。如果我再次刷新页面,则以下是发送到服务器的请求头:
只发送第一个cookie(age=44
)。在控制台中记录document.cookie
也只返回'age=44'
当从Chrome的UI检查Cookie时,我还可以看到只有第一个被保存:
这里有什么问题
如果您只是使用vanilla节点,则只需将数组作为第二个参数传递给: 如果使用Express 4.11.0+您可以使用:
谢谢我刚刚查看了节点文档,似乎如果您尝试使用
res.setHeader
多次设置相同的头,那么只会使用最后一个头。感谢您提及阵列方法。
res.setHeader('Set-Cookie', [
'age=44; path=/',
'name=ok; path=/',
'something=else; path=/'
])
res.append('Set-Cookie', 'age=44; path=/');
res.append('Set-Cookie', 'name=ok; path=/');
res.append('Set-Cookie', 'something=else; path=/');