我的Php代码可以发送两个具有相同名称的标头,在php第二个参数是用于替换或覆盖。但在ExpressJS中,res.header
与php代码不同
PHP代码:
header("Link: <http://$prefetch_next_img>; rel=prefetch",false);
header("Link: <http://$prefetch_next_img2>; rel=prefetch",false);
http://us2.php.net/manual/en/function.header.php
ExpressJS(NodeJS):
res.header('Link','Fake Value');
res.header('Link','Only Send it'); // previous header replaced
答案 0 :(得分:4)
最终,您需要传递一个数组来为同一个标头设置多个值
res.header('Set-Cookie', ['foo', 'bar']);
查看response library表示我们可以看到以下示例:
/**
* Set header `field` to `val`, or pass
* an object of header fields.
*
* Examples:
*
* res.set('Foo', ['bar', 'baz']);
* res.set('Accept', 'application/json');
* res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });
*
* Aliased as `res.header()`.
*
* @param {String|Object} field
* @param {String|Array} val
* @return {ServerResponse} for chaining
* @public
*/
深入研究代码向我们展示了这只是节点response.setHeader()的代理,它遵循相同的格式
为隐式标头设置单个标头值。如果这个标题 已存在于待发送标头中,其值将被替换。 如果需要发送多个标头,请在此处使用字符串数组 同名。
response.setHeader('Set-Cookie', ['type=ninja', 'language=javascript']);