如何在 ExpressJS 中使用多个 HttpHeader(同名)

Maj*_*eri 1 php http node.js express

我的 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);  
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Sea*_*n3z 6

最终,您需要传递一个数组来为同一个标头设置多个值

res.header('Set-Cookie', ['foo', 'bar']);
Run Code Online (Sandbox Code Playgroud)

纵观响应库的表达,我们可以看到下面的例子:

/**
 * 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
 */
Run Code Online (Sandbox Code Playgroud)

对代码的深入研究表明,这实际上只是节点response.setHeader()的代理,遵循相同的格式

为隐式标头设置单个标头值。如果该头已经存在于待发送头中,则其值将被替换。如果您需要发送多个具有相同名称的标头,请在此处使用字符串数组。

response.setHeader('Set-Cookie', ['type=ninja', 'language=javascript']);
Run Code Online (Sandbox Code Playgroud)