Node.js Http2ServerRequest.httpVersion Method

Last Updated : 23 Jul, 2026

The Node.js Http2ServerRequest.httpVersion property provides information about the HTTP protocol version used for the incoming request. It allows applications to identify the protocol version, making it useful when implementing protocol-specific logic or maintaining compatibility across different HTTP versions.

  • Identifies the HTTP protocol version of the incoming request.
  • Helps implement version-specific request handling.

Syntax:

request.httpVersion

Where,

  • request: An instance of the Http2ServerRequest class.
  • httpVersion: Property that provides the HTTP protocol version used for the request.

Return Value: A string representing the HTTP protocol version of the incoming request.

Example 1:

JavaScript
// Node.js program to demonstrate the
// Http2ServerRequest.httpVersion 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 httpVersion of http2 
  // by using request.httpVersion method
  const auth = request.httpVersion;
  console.log("http version :- " + auth)
};

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

server.on('stream', (stream, requesthttpVersion) => {
  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', (responsehttpVersion) => {
  console.log("status : " 
  + responsehttpVersion[":status"]);
});

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

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

Output:

http version :- 2.0
status : 200
Received: hello
Received: priority weight : 16
client destroyed
server destroyed

Example 2:

JavaScript
// Node.js program to demonstrate the
// Http2ServerRequest.httpVersion 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 httpVersion of http2 
  // by using request.httpVersion method
  const auth = request.httpVersion;
  response.end("http version :- " + 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:

Received: http version :- 2.0
client destroyed
server destroyed

Use Cases of Http2ServerRequest.httpVersion Property

  • Determining the HTTP protocol version used by the client.
  • Implementing version-specific request handling.
  • Maintaining compatibility with different HTTP versions.
  • Logging the protocol version for debugging and monitoring.

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

Comment

Explore