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


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