Node.js Http2ServerResponse.hasHeader() Method

Last Updated : 4 Aug, 2026

The Http2ServerResponse.hasHeader() is an inbuilt application programming interface of the class Http2ServerResponse within the http2 module which is used to check if the header identified by name is currently set in the outgoing headers or not.

Syntax:

response.hasHeader(name)

Where:

  • response: The Http2ServerResponse object.
  • name: The name of the response header to check.

Return Value: The method returns a boolean value:

  • true if the specified response header exists.
  • false if the specified response header does not exist.

Example 1:

JavaScript
// Node.js program to demonstrate the
// Http2ServerResponse.hasHeader() method
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'
  );

  // Checking if the header is present or not
  // by using hasHeader() method
  const value = response.hasHeader('Content-Type')

  // Display the header
  if(value) console.log("header is present")
  else console.log("header is not present")
};

// 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 is present
status : 200
Received: hello
Received: priority weight : 16
client destroyed
server destroyed

Example 2:

JavaScript
// Node.js program to demonstrate the
// Http2ServerResponse.hasHeader() method
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']);

    // Checking if the header is present or not
    // by using hasHeader() method
    const value = response.hasHeader('Content-Type')

    // Display the header
    if(value) console.log("header is present")
    else console.log("header is not present")
};

// 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 is not present
Received: The sum weight of all Http2Stream : 0
client destroyed
server destroyed

Use Cases of Http2ServerResponse.hasHeader() Method

  • It checks whether a header has already been set before adding it.
  • It prevents duplicate response headers.
  • It verifies the presence of optional headers before updating or removing them.
  • It helps implement conditional response logic based on existing headers.

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

Comment

Explore