The Headers
interface of the Fetch API allows you to perform various actions on HTTP request and response headers. These actions include retrieving, setting, adding to, and removing headers from the list of the request's headers. A Headers
object has an associated header list, which is initially empty and consists of zero or more name and value pairs. You can add to this using methods like append()
(see Examples.) In all methods of this interface, header names are matched by case-insensitive byte sequence.
For security reasons, some headers can only be controlled by the user agent. These headers include the forbidden header names and forbidden response header names.
A Headers object also has an associated guard, which takes a value of immutable
, request
, request-no-cors
, response
, or none
. This affects whether the set()
, delete()
, and append()
methods will mutate the header. For more information see Guard.
You can retrieve a Headers
object via the Request.headers
and Response.headers
properties, and create a new Headers
object using the Headers.Headers()
constructor.
An object implementing Headers
can directly be used in a for...of
structure, instead of entries()
: for (var p of myHeaders)
is equivalent to for (var p of myHeaders.entries())
.
Note: you can find more out about the available headers by reading our HTTP headers reference.
Constructor
Headers()
- Creates a new
Headers
object.
Methods
Headers.append()
- Appends a new value onto an existing header inside a
Headers
object, or adds the header if it does not already exist. Headers.delete()
- Deletes a header from a
Headers
object. Headers.entries()
- Returns an
iterator
allowing to go through all key/value pairs contained in this object. Headers.forEach()
- Executes a provided function once for each array element.
Headers.get()
- Returns a
ByteString
sequence of all the values of a header within aHeaders
object with a given name. Headers.has()
- Returns a boolean stating whether a
Headers
object contains a certain header. Headers.keys()
- Returns an
iterator
allowing you to go through all keys of the key/value pairs contained in this object. Headers.set()
- Sets a new value for an existing header inside a
Headers
object, or adds the header if it does not already exist. Headers.values()
- Returns an
iterator
allowing you to go through all values of the key/value pairs contained in this object.
Note: To be clear, the difference between Headers.set()
and Headers.append()
is that if the specified header does already exist and does accept multiple values, Headers.set()
will overwrite the existing value with the new one, whereas Headers.append()
will append the new value onto the end of the set of values. See their dedicated pages for example code.
Note: All of the Headers methods will throw a TypeError
if you try to pass in a reference to a name that isn't a valid HTTP Header name. The mutation operations will throw a TypeError
if the header has an immutable Guard. In any other failure case they fail silently.
Note: When Header values are iterated over, they are automatically sorted in lexicographical order, and values from duplicate header names are combined.
Obsolete methods
Headers.getAll()
- Used to return an array of all the values of a header within a
Headers
object with a given name; this method has now been deleted from the spec, andHeaders.get()
now returns all values of a given name instead of just the first one.
Examples
In the following snippet, we create a new header using the Headers()
constructor, add a new header to it using append()
, then return that header value using get()
:
var myHeaders = new Headers();
myHeaders.append('Content-Type', 'text/xml');
myHeaders.get('Content-Type') // should return 'text/xml'
The same can be achieved by passing an array of arrays or an object literal to the constructor:
var myHeaders = new Headers({
'Content-Type': 'text/xml'
});
// or, using an array of arrays:
myHeaders = new Headers([
['Content-Type', 'text/xml']
]);
myHeaders.get('Content-Type') // should return 'text/xml'
Specifications
Specification | Status | Comment |
FetchThe definition of 'Headers' in that specification. | Living Standard |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Headers
|
Chrome Full support 42 Full support 42 Full support 41 Disabled' From version 41: this feature is behind the |
Edge
Full support ≤18 |
Firefox Full support 39 Full support 39 Full support 34 Disabled' From version 34: this feature is behind the |
IE
No support No |
Opera Full support 29 Full support 29 Full support 28 Disabled' From version 28: this feature is behind the |
Safari
Full support 10.1 |
WebView Android
Full support 42 |
Chrome Android Full support 42 Full support 42 Full support 41 Disabled' From version 41: this feature is behind the |
Firefox Android
Full support 44 |
Opera Android Full support 29 Full support 29 Full support 28 Disabled' From version 28: this feature is behind the |
Safari iOS
No support No |
Samsung Internet Android
Full support 4.0 |
Chrome Full support 42 Full support 42 Full support 41 Disabled' From version 41: this feature is behind the |
Edge Full support ≤79 Full support ≤79 Full support ≤79 Disabled' From version ≤79: this feature is behind the |
Firefox Full support 39 Full support 39 Full support 34 Disabled' From version 34: this feature is behind the |
IE
No support No |
Opera Full support 29 Full support 29 Full support 28 Disabled' From version 28: this feature is behind the |
Safari
Full support 10.1 |
WebView Android
Full support 42 |
Chrome Android Full support 42 Full support 42 Full support 41 Disabled' From version 41: this feature is behind the |
Firefox Android
No support No |
Opera Android Full support 29 Full support 29 Full support 28 Disabled' From version 28: this feature is behind the |
Safari iOS
No support No |
Samsung Internet Android
Full support 4.0 | |
Chrome Full support 42 Full support 42 Full support 41 Disabled' From version 41: this feature is behind the |
Edge
Full support 14 |
Firefox Full support 39 Full support 39 Full support 34 Disabled' From version 34: this feature is behind the |
IE
No support No |
Opera Full support 29 Full support 29 Full support 28 Disabled' From version 28: this feature is behind the |
Safari
Full support 10.1 |
WebView Android
Full support 42 |
Chrome Android Full support 42 Full support 42 Full support 41 Disabled' From version 41: this feature is behind the |
Firefox Android
No support No |
Opera Android Full support 29 Full support 29 Full support 28 Disabled' From version 28: this feature is behind the |
Safari iOS
No support No |
Samsung Internet Android
Full support 4.0 | |
Chrome Full support 42 Full support 42 Full support 41 Disabled' From version 41: this feature is behind the |
Edge
Full support 14 |
Firefox Full support 39 Full support 39 Full support 34 Disabled' From version 34: this feature is behind the |
IE
No support No |
Opera Full support 29 Full support 29 Full support 28 Disabled' From version 28: this feature is behind the |
Safari
Full support 10.1 |
WebView Android
Full support 42 |
Chrome Android Full support 42 Full support 42 Full support 41 Disabled' From version 41: this feature is behind the |
Firefox Android
No support No |
Opera Android Full support 29 Full support 29 Full support 28 Disabled' From version 28: this feature is behind the |
Safari iOS
No support No |
Samsung Internet Android
Full support 4.0 | |
Chrome
Full support 45 |
Edge
Full support 16 |
Firefox
Full support 44 |
IE
No support No |
Opera
Full support 32 |
Safari
? |
WebView Android
Full support 45 |
Chrome Android
Full support 45 |
Firefox Android
Full support 44 |
Opera Android
Full support 32 |
Safari iOS
No support No |
Samsung Internet Android
Full support 5.0 | |
Chrome Full support 42 Full support 42 Full support 41 Disabled' From version 41: this feature is behind the |
Edge
Full support 14 |
Firefox Full support 52 Full support 52 Notes' Prior to Firefox 52, Full support 34 Disabled' From version 34: this feature is behind the |
IE
No support No |
Opera Full support 29 Full support 29 Full support 28 Disabled' From version 28: this feature is behind the |
Safari
Full support 10.1 |
WebView Android
Full support 42 |
Chrome Android Full support 42 Full support 42 Full support 41 Disabled' From version 41: this feature is behind the |
Firefox Android
No support No |
Opera Android Full support 29 Full support 29 Full support 28 Disabled' From version 28: this feature is behind the |
Safari iOS
No support No |
Samsung Internet Android
Full support 4.0 | |
Chrome
No support 42 — 60 |
Edge
No support ≤18 — 79 |
Firefox No support 39 — 52 No support 39 — 52 Full support 34 Disabled' From version 34: this feature is behind the |
IE
No support No |
Opera
No support 29 — 47 |
Safari
No support No |
WebView Android
No support 42 — 60 |
Chrome Android
No support 42 — 60 |
Firefox Android
No support No |
Opera Android
No support 29 — 44 |
Safari iOS
No support No |
Samsung Internet Android
Full support 4.0 | |
Chrome Full support 42 Full support 42 Full support 41 Disabled' From version 41: this feature is behind the |
Edge
Full support 14 |
Firefox Full support 39 Full support 39 Full support 34 Disabled' From version 34: this feature is behind the |
IE
No support No |
Opera Full support 29 Full support 29 Full support 28 Disabled' From version 28: this feature is behind the |
Safari
No support No |
WebView Android
Full support 42 |
Chrome Android Full support 42 Full support 42 Full support 41 Disabled' From version 41: this feature is behind the |
Firefox Android
No support No |
Opera Android Full support 29 Full support 29 Full support 28 Disabled' From version 28: this feature is behind the |
Safari iOS
No support No |
Samsung Internet Android
Full support 4.0 | |
Chrome
Full support 45 |
Edge
Full support 16 |
Firefox
Full support 44 |
IE
No support No |
Opera
Full support 32 |
Safari
? |
WebView Android
Full support 45 |
Chrome Android
Full support 45 |
Firefox Android
Full support 44 |
Opera Android
Full support 32 |
Safari iOS
No support No |
Samsung Internet Android
Full support 5.0 | |
Lexicographical sorting, and values from duplicate header names combined when iterated. | Chrome
? |
Edge
? |
Firefox
Full support 44 |
IE
No support No |
Opera
Full support 28 |
Safari
No support No |
WebView Android
? |
Chrome Android
? |
Firefox Android
No support No |
Opera Android
? |
Safari iOS
No support No |
Samsung Internet Android
? |
Chrome Full support 42 Full support 42 Full support 41 Disabled' From version 41: this feature is behind the |
Edge
Full support 14 |
Firefox Full support 39 Full support 39 Full support 34 Disabled' From version 34: this feature is behind the |
IE
No support No |
Opera Full support 29 Full support 29 Full support 28 Disabled' From version 28: this feature is behind the |
Safari
No support No |
WebView Android
Full support 42 |
Chrome Android Full support 42 Full support 42 Full support 41 Disabled' From version 41: this feature is behind the |
Firefox Android
No support No |
Opera Android Full support 29 Full support 29 Full support 28 Disabled' From version 28: this feature is behind the |
Safari iOS
No support No |
Samsung Internet Android
Full support 4.0 | |
Chrome
Full support 45 |
Edge
Full support 16 |
Firefox
Full support 44 |
IE
No support No |
Opera
Full support 32 |
Safari
? |
WebView Android
Full support 45 |
Chrome Android
Full support 45 |
Firefox Android
Full support 44 |
Opera Android
Full support 32 |
Safari iOS
No support No |
Samsung Internet Android
Full support 5.0 |
Legend
- Full support
- Full support
- No support
- No support
- Compatibility unknown
- Compatibility unknown
- Experimental. Expect behavior to change in the future.'
- Experimental. Expect behavior to change in the future.
- Non-standard. Expect poor cross-browser support.'
- Non-standard. Expect poor cross-browser support.
- Deprecated. Not for use in new websites.'
- Deprecated. Not for use in new websites.
- See implementation notes.'
- See implementation notes.
- User must explicitly enable this feature.'
- User must explicitly enable this feature.
See also
Headers by Mozilla Contributors is licensed under CC-BY-SA 2.5.