• statusCode {number}
    • statusMessage {string}
    • headers {Object}
    • 返回: {http.ServerResponse}

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

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

    1. const body = 'hello world';
    2. response
    3. .writeHead(200, {
    4. 'Content-Length': Buffer.byteLength(body),
    5. 'Content-Type': 'text/plain'
    6. })
    7. .end(body);

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

    如果在调用此方法之前调用了 [response.write()] 或 [response.end()],则将计算隐式或可变的响应头并调用此函数。

    当使用 [response.setHeader()] 设置响应头时,则与传给 [response.writeHead()] 的任何响应头合并,且 [response.writeHead()] 的优先。

    如果调用此方法并且尚未调用 [response.setHeader()],则直接将提供的响应头值写入网络通道而不在内部进行缓存,响应头上的 [response.getHeader()] 将不会产生预期的结果。 如果需要渐进的响应头填充以及将来可能的检索和修改,则改用 [response.setHeader()]。

    1. // 返回 content-type = text/plain
    2. const server = http.createServer((req, res) => {
    3. res.setHeader('Content-Type', 'text/html');
    4. res.setHeader('X-Foo', 'bar');
    5. res.writeHead(200, { 'Content-Type': 'text/plain' });
    6. res.end('ok');
    7. });

    Content-Length 以字节而非字符为单位。 使用 Buffer.byteLength() 来判断主体的长度(以字节为单位)。 Node.js 不检查 Content-Length 和已传输的主体的长度是否相等。

    尝试设置包含无效字符的响应头字段名称或值将导致抛出 [TypeError]。