This is an experimental technology
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future versions of browsers as the specification changes.
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. 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 controller 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.
Headers.Headers()
Headers
object.Headers.append()
Headers
object, or adds the header if it does not already exist.Headers.delete()
Headers
object.Headers.entries()
iterator
allowing to go through all key/value pairs contained in this object.Headers.get()
Headers
object with a given name.Headers.has()
Headers
object contains a certain header.Headers.keys()
iterator
allowing to go through all keys f the key/value pairs contained in this object.Headers.set()
Headers
object, or adds the header if it does not already exist.Headers.values()
iterator
allowing 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.
Headers.getAll()
Headers
object with a given name; this method has now been deleted from the spec, and Headers.get()
now returns all values instead of just one.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'
Specification | Status | Comment |
---|---|---|
Fetch The definition of 'Headers' in that specification. | Living Standard |
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | 42 41 behind pref | (Yes) |
39 (39) 34 behind pref 52 (52)[1] | No support | 29 | No support |
entries() , keys() , values() , and support of for...of
| ? | No support | 44 (44) | ? | ? | ? |
Feature | Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|
Basic support | No support | (Yes) | (Yes) | No support | No support | No support | No support |
entries() , keys() , values() , and support of for...of
| ? | No support | 44.0 (44) | ? | ? | ? | ? |
[1] Prior to Firefox 52, get()
only returned the first value in the specified header, with getAll()
returning all values. From 52 onwards, get()
now returns all values and getAll()
has been deleted.
© 2005–2017 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Headers