statusCode{number}statusMessage{string}headers{Object}- 返回: {http.ServerResponse}
向请求发送响应头。
状态码是一个 3 位的 HTTP 状态码,如 404。
最后一个参数 headers 是响应头。
可以可选地将用户可读的 statusMessage 作为第二个参数。
返回对 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()],则直接将提供的响应头值写入网络通道而不在内部进行缓存,响应头上的 [response.getHeader()] 将不会产生预期的结果。
如果需要渐进的响应头填充以及将来可能的检索和修改,则改用 [response.setHeader()]。
// 返回 content-type = text/plainconst 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]。
