在node.js中(在Connect.js中运行),我可以使用writehead设置ether或者Set-Cookie,但不能同时设置两者。目前,以下设置了cooke,但URL未被重定向到新位置:
function foo(req, res, next) {
var url = /container-templates/;
if (url.test(req.url)) {
console.log(url.test(req.url));
console.log(req.url);
res.writeHead(302, ["Location", 'https://staging.dx.host.com' + req.url],
["Set-Cookie", "fake-token=5b49adaaf7687fa"]);
res.end();
} else { next() }
}
另一方面,我这样做是为了学习体验,不想使用任何预先编写的插件。
答案 0 :(得分:4)
Response#writeHead
期望标题是一个Object而不是数组参数列表。
Node HTTP documentation定义了以下签名:
response.writeHead(statusCode, [reasonPhrase], [headers])
如果您想传入多个标题,则上面的代码应为:
response.writeHead(302, {
Location: 'https://staging.dx.host.com' + req.url',
'Set-Cookie': 'fake-token=5b49adaaf7687fa'
});
[]
上的reasonPhrase
表示其可选,并根据参数的类型推断您为该函数提供的内容。
此外,您不需要将对象的key
部分包装在引号中,除非它包含对变量名称无效的字符(例如-
。)和单个{ {1}}适用于所有字符串 - '
和'
之间的javascript没有区别。