Node.js Http2ServerRequest.headers Method

Last Updated : 23 Jul, 2026

The Http2ServerRequest.headers property in Node.js returns an object containing all HTTP/2 request headers sent by the client. It allows the server to access header information such as content type, authorization details, user agent, and custom headers, making it useful for request validation, authentication, routing, and processing client data.

  • Header names are provided in lowercase.
  • Includes both standard and custom HTTP/2 headers.
  • Can be used to read client-sent metadata.

Syntax:

request.headers

Where,

  • request: An Http2ServerRequest object representing the incoming HTTP/2 request.
  • headers: A property that returns an object containing all request headers sent by the client.

Return Value: Returns an object containing all HTTP/2 request headers as key-value pairs.

Example 1:

JavaScript
// Node.js program to demonstrate the
// Http2ServerRequest.headers 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) => {{

  // Getting headers of http2 
  // by using request.headers method
  const auth = request.headers;
  console.log(auth)
}};

// 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': '/' });

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

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

Output:

[Object: null prototype] {       
':scheme': 'http',
':authority': 'localhost:8000',
':path': '/',
':method': 'GET'
}
Received: The sum weight of all Http2Stream : 0
client destroyed
server destroyed

Example 2:

JavaScript
// Node.js program to demonstrate the
// Http2ServerRequest.headers 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) => {

  // Getting headers of http2 
  // by using request.headers method
  const auth = request.headers;
  console.log(auth)
};

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

server.on('stream', (stream, requestHeaders) => {
  stream.respond({ ':status': 200, 'content-type': 
  'text/plain' });
  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', (responseHeaders) => {
  console.log("status : " 
  + responseHeaders[":status"]);
});

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

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

Output:

[Object: null prototype] {       
':scheme': 'http',
':authority': 'localhost:8000',
':path': '/',
':method': 'GET'
}
status : 200
Received: hello
Received: priority weight : 16
client destroyed

Use Cases of Http2ServerRequest.headers Property

  • Checking authentication or authorization headers.
  • Identifying the client's user agent or content type.
  • Accessing custom headers for application logic.
  • Validating request metadata before processing.

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

Comment

Explore