The Headers.forEach() method executes a callback function once per each key/value pair in the Headers object.


// Arrow function
forEach((value, key) => { /* … */ })
forEach((value, key, object) => { /* … */ })

// Inline callback function
forEach(function (value, key) { /* … */ })
forEach(function (value, key, object) { /* … */ })
forEach(function (value, key) { /* … */ }, thisArg)



Function to execute for each entry in the map. It takes the following arguments:


Value of the currently visited header entry.


Name of the currently visited header entry.


The Headers object being iterated.

thisArg Optional

Value to use as this when executing callback.

Return value


The Headers.forEach() method executes the provided callback once for each key of the Headers which actually exist. It is not invoked for keys which have been deleted. However, it is executed for keys which are present but have the value undefined.


Printing the contents of Headers object

The following code logs a line for each key/value in the myHeaders object.

// Create a new test Headers object
const myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Cookie", "This is a demo cookie");
myHeaders.append("compression", "gzip");

// Display the key/value pairs
myHeaders.forEach((value, key) => {
  console.log(`${key} ==> ${value}`);

The result is:

compression ==> gzip
content-type ==> application/json
cookie ==> This is a demo cookie

Browser compatibility

BCD tables only load in the browser

See also