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
Http2ServerResponseobject 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:
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:
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