This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.
Note: This feature is available in Web Workers.
The has() method of the Headers interface returns a boolean stating whether a Headers object contains a certain header.
For security reasons, some headers can only be controlled by the user agent. These headers include the forbidden request headers and forbidden response header names.
has(name)
nameThe name of the HTTP header you want to test for. If the given name is not a valid HTTP header name, this method throws a TypeError.
A boolean value.
Creating an empty Headers object is simple:
const myHeaders = new Headers(); // Currently empty
You could add a header to this using Headers.append, then test for the existence of it using has():
myHeaders.append("Content-Type", "image/jpeg");
myHeaders.has("Content-Type"); // Returns true
myHeaders.has("Accept-Encoding"); // Returns false
| Specification |
|---|
| Fetch> # ref-for-dom-headers-has①> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
has |
42 | 14 | 39 | 29 | 10.1 | 42 | 39 | 29 | 10.3 | 4.0 | 42 | 10.3 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Headers/has