當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。