标头对象


【Headers object】

头信息在 JavaScript 对象中表示为自身属性。属性键将被序列化为小写。属性值应为字符串(如果不是,将被强制转换为字符串)或字符串数组(以便每个头字段发送多个值)。

【Headers are represented as own-properties on JavaScript objects. The property keys will be serialized to lower-case. Property values should be strings (if they are not they will be coerced to strings) or an Array of strings (in order to send more than one value per header field).】

const headers = {
  ':status': '200',
  'content-type': 'text-plain',
  'ABC': ['has', 'more', 'than', 'one', 'value'],
};

stream.respond(headers); 

传递给回调函数的头对象将具有 null 原型。这意味着常规的 JavaScript 对象方法,如 Object.prototype.toString()Object.prototype.hasOwnProperty() 将无法使用。

【Header objects passed to callback functions will have a null prototype. This means that normal JavaScript object methods such as Object.prototype.toString() and Object.prototype.hasOwnProperty() will not work.】

对于传入的标头:

【For incoming headers:】

  • :status 头会被转换为 number
  • :status:method:authority:scheme:path:protocol、age、authorization、access-control-allow-credentials、access-control-max-age、access-control-request-method、content-encoding、content-language、content-length、content-location、content-md5、content-range、content-type、date、dnt、etag、expires、from、host、if-match、if-modified-since、if-none-match、if-range、if-unmodified-since、last-modified、location、max-forwards、proxy-authorization、range、referer、retry-after、tk、upgrade-insecure-requests、user-agent 或 x-content-type-options 的重复项将被丢弃。
  • set-cookie 总是一个数组。重复项会被添加到数组中。
  • 对于重复的 cookie 头,值会使用 '; ' 连接在一起。
  • 对于所有其他标题,值将使用“, ”连接在一起。
import { createServer } from 'node:http2';
const server = createServer();
server.on('stream', (stream, headers) => {
  console.log(headers[':path']);
  console.log(headers.ABC);
});const http2 = require('node:http2');
const server = http2.createServer();
server.on('stream', (stream, headers) => {
  console.log(headers[':path']);
  console.log(headers.ABC);
});