Node.js Http2ServerResponse.getHeaderNames() Method

Last Updated : 4 Aug, 2026

The Http2ServerResponse.getHeaderNames() method in Node.js returns an array containing the names of all HTTP response headers that have been set. It is useful for checking which headers are currently queued to be sent before the response is transmitted to the client.

  • It retrieves the names of all headers currently set on the response.
  • It can be used to verify which headers have been added before sending the response.
  • It is useful for debugging or validating response header configuration.

Syntax:

response.getHeaderNames()

Where:

  • response: The Http2ServerResponse object used to send the HTTP/2 response to the client.
  • getHeaderNames(): A method that returns an array containing the names of all headers currently set on the response.

Return Value: This method returns an array containing the unique names of the current outgoing headers.

Example 1:

JavaScript
const http2 = require('http2');
const fs = require('fs');

// Private key and public certificate for access
const options = {
  key: fs.readFileSync('private-key.pem'),
  cert: fs.readFileSync('public-cert.pem'),
};

// Request and response handler
const http2Handlers = (request, response) => {

    // Setting new header
    response.setHeader(
      'Content-Type', 
      'hello world; charset=utf-8'
    );

    // Getting header's names
    // by using getHeaderNames() method
    const value = response.getHeaderNames()

    // Display the header
    console.log("header names :- " +  value);
};

// Creating and initializing server
// by using http2.createServer() method
const server = http2
  .createServer(options,http2Handlers);

server.on('stream', (stream, requestheader) => {
    stream.write('hello ');

    // Getting all information of this
    // http2stream object by using 
    // state method
    const status = stream.state;

    stream.end("priority weight : " 
      + status.weight);

    // Stopping the server
    // by using the close() method
    server.close(() => {
        console.log("server destroyed");
    })
});

server.listen(8000);

// Creating and initializing client
// by using tls.connect() method
const client = http2.connect(
  'http://localhost:8000');

const req = client.request({ 
  ':method': 'GET', ':path': '/'});

req.on('response', (responsesocket) => {
    console.log("status : " 
    + responsesocket[":status"]);
});

req.on('data', (data) => {
    console.log('Received: %s ',
    data.toString().replace(/(\n)/gm,""));
});

req.on('end', () => {
  client.close(() => {
    console.log("client destroyed");
  })
});

Output:

header :- content-type
status : 200
Received: hello
Received: priority weight : 16
client destroyed
server destroyed

Example 2:

JavaScript
const http2 = require('http2');
const fs = require('fs');

// Private key and public certificate for access
const options = {
  key: fs.readFileSync('private-key.pem'),
  cert: fs.readFileSync('public-cert.pem'),
};

// Request and response handler
const http2Handlers = (request, response) => {

    // Setting new header
    response.setHeader('Foo', 'bar');
    response.setHeader(
      'Set-Cookie', ['foo=bar', 'bar=baz']);

    // Getting header names
    // by using getHeaderNames() method
    const value = response.getHeaderNames()

    // Display the header
    console.log("header names")

    value.forEach(element => { 
        console.log(element); 
    }); 
};

// Creating and initializing server
// by using http2.createServer() method
const server = http2.createServer(options,http2Handlers);

server.on('stream', (stream, requestHeaders) => {

    // Getting all information of this http2stream object
    // by using state method
    const status = stream.state;

    stream.end("The sum weight of all Http2Stream : " + 
    status.sumDependencyWeight);

    // Stopping the server
    // by using the close() method
    server.close(() => {
        console.log("server destroyed");
    })
});

server.listen(8000);

// Creating and initializing client
// by using tls.connect() method
const client = http2.connect('http://localhost:8000');

const req = client.request({ ':method': 'GET', 
':path': '/www.geeksforgeeks.org' });

req.on('data', (data) => {
    console.log('Received: %s ',
    data.toString().replace(/(\n)/gm,""));
});

req.on('end', () => {
    client.close(() => {
        console.log("client destroyed");
    })
});

Output:

header names
foo
set-cookie
Received: The sum weight of all Http2Stream : 0
client destroyed
server destroyed

Use Cases of Http2ServerResponse.getHeaderNames() Method

  • It checks which response headers have been set before sending the response.
  • It helps debug missing or incorrectly configured response headers.
  • It validates header configuration before modifying or removing headers.
  • It assists in logging or inspecting response header information during development.

Reference: https://nodejs.org/dist/latest-v12.x/docs/api/http2.html#http2_response_getheader_name

Comment

Explore