当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js http2.Http2ServerResponse response.writeHead(statusCode[, statusMessage][, headers])用法及代码示例


response.writeHead(statusCode[, statusMessage][, headers])

历史
版本变化
v11.10.0、v10.17.0

writeHead() 返回 this 以允许与 end() 链接。

v8.4.0

添加于:v8.4.0


参数

向请求发送响应标头。状态代码是 3 位 HTTP 状态代码,例如 404 。最后一个参数 headers 是响应标头。

返回对 Http2ServerResponse 的引用,以便可以链接调用。

为了与 HTTP/1 兼容,可以将人类可读的 statusMessage 作为第二个参数传递。但是,由于 statusMessage 在 HTTP/2 中没有任何意义,因此该参数将无效并且会发出进程警告。

const body = 'hello world';
response.writeHead(200, {
  'Content-Length': Buffer.byteLength(body),
  'Content-Type': 'text/plain; charset=utf-8',
});

Content-Length 以字节而不是字符给出。 Buffer.byteLength() API 可用于确定给定编码中的字节数。在出站消息上,Node.js 不会检查Content-Length 和正在传输的正文的长度是否相等。但是,在接收消息时,当 Content-Length 与实际负载大小不匹配时,Node.js 会自动拒绝消息。

在调用 response.end() 之前,该方法最多可以在一条消息上调用一次。

如果在调用此函数之前调用了 response.write() response.end() ,则会计算隐式/可变标头并调用此函数。

当标头已设置为 response.setHeader() 时,它们将与传递给 response.writeHead() 的任何标头合并,并且传递给 response.writeHead() 的标头优先。

// Returns content-type = text/plain
const server = http2.createServer((req, res) => {
  res.setHeader('Content-Type', 'text/html; charset=utf-8');
  res.setHeader('X-Foo', 'bar');
  res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
  res.end('ok');
});

尝试设置包含无效字符的标头字段名称或值将导致引发 TypeError

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 response.writeHead(statusCode[, statusMessage][, headers])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。