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


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


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

历史
版本变化
v14.14.0

允许将标头作为数组传递。

v11.10.0、v10.17.0

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

v5.11.0、v4.4.5

如果 statusCode 不是 [100, 999] 范围内的数字,则抛出 RangeError

v0.1.30

添加于:v0.1.30


参数

向请求发送响应标头。状态代码是 3 位 HTTP 状态代码,例如 404 。最后一个参数 headers 是响应标头。可以选择将人类可读的statusMessage 作为第二个参数。

headers 可能是 Array,其中键和值在同一个列表中。它不是元组列表。因此,even-numbered 偏移量是关键值,而odd-numbered 偏移量是关联值。该数组的格式与 request.rawHeaders 相同。

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

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

此方法只能在消息上调用一次,并且必须在调用 response.end() 之前调用。

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

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

如果调用了这个方法并且没有调用 response.setHeader() ,它会直接将提供的header值写入网络通道而不进行内部缓存,并且header上的 response.getHeader() 不会产生预期的结果。如果需要在未来可能检索和修改标题的渐进式填充,请改用 response.setHeader()

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

Content-Length 以字节为单位,而不是字符。使用 Buffer.byteLength() 确定正文的长度(以字节为单位)。 Node.js 不检查Content-Length 和已传输的正文长度是否相等。

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

相关用法


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