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
Http2ServerResponseobject. - name: The name of the response header to check.
Return Value: The method returns a boolean value:
trueif the specified response header exists.falseif the specified response header does not exist.
Example 1:
// 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:
// 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