Headers
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis mars 2017.
Note : Cette fonctionnalité est disponible via les Web Workers.
L'interface Headers de l'API Fetch vous permet d'effectuer diverses actions sur les en-têtes de requête et de réponse HTTP. Ces actions incluent la récupération, la configuration, l'ajout et la suppression d'en-têtes de la liste des en-têtes de requêtes.
Vous pouvez récupérer un objet Headers avec les propriétés Request.headers et Response.headers, et créer un nouvel objet Headers en utilisant le constructeur Headers(). Par rapport à l'utilisation d'objets simples, l'utilisation d'objets Headers pour envoyer des requêtes offre une certaine validation supplémentaire des entrées. Par exemple, elle normalise les noms d'en-tête en minuscules, supprime les espaces blancs en début et en fin des valeurs d'en-tête, et empêche certains en-têtes d'être définis.
Note : Vous pouvez en savoir plus sur les en-têtes disponibles en lisant notre référence sur les en-têtes HTTP.
Description
Un objet Headers a une liste d'en-têtes associée, qui est initialement vide et composée de zéro ou plusieurs paires nom/valeur. Vous pouvez ajouter à cette liste en utilisant des méthodes comme append() (voir les exemples.) Dans toutes les méthodes de cette interface, les noms d'en-tête sont comparés par séquence d'octets insensible à la casse.
Un objet implémentant Headers peut être utilisé directement dans une structure for...of, au lieu de entries() : for (const p of myHeaders) est équivalent à for (const p of myHeaders.entries()).
Restrictions de modification
Certains objets Headers ont des restrictions quant à savoir si les méthodes set(), delete(), et append() peuvent modifier l'en-tête. Les restrictions de modification sont définies en fonction de la manière dont l'objet Headers est créé.
- Pour les en-têtes créés avec le constructeur
Headers(), il n'y a aucune restriction de modification. - Pour les en-têtes d'objets
Request:- Si le
modede la requête estno-cors, vous pouvez modifier n'importe quel nom/valeur d'en-tête de requête autorisé par CORS. - Sinon, vous pouvez modifier n'importe quel nom/valeur d'en-tête de requête qui n'est pas interdit.
- Si le
- Pour les en-têtes d'objets
Response:- Si la réponse est créée en utilisant
Response.error()ouResponse.redirect(), ou si elle provient d'un appelfetch(), les en-têtes sont immuables et ne peuvent pas être modifiés. - Sinon, si la réponse est créée en utilisant
Response()ouResponse.json(), vous pouvez modifier n'importe quel nom/valeur d'en-tête de réponse qui n'est pas interdit.
- Si la réponse est créée en utilisant
Toutes les méthodes Headers (en-têtes) lèveront une exception TypeError si vous essayez de passer une référence à un nom qui n'est pas un nom d'en-tête HTTP valide (angl.). Les opérations de mutation lèveront un TypeError si l'en-tête est immuable. Dans tout autre cas d'échec, elles échouent silencieusement.
Constructeur
Headers()-
Crée un nouvel objet
Headers.
Méthodes d'instance
Headers.append()-
Ajoute une nouvelle valeur à un en-tête existant dans un objet
Headers, ou ajoute l'en-tête s'il n'existe pas déjà. Headers.delete()-
Supprime un en-tête dans un objet
Headers. Headers.entries()-
Retourne un
iteratorpermettant d'accéder à toutes les paires clé/valeur contenues dans cet objet. Headers.forEach()-
Exécute une fonction fournie une fois pour chaque élément du tableau.
Headers.get()-
Retourne une chaîne de caractères (
String) de toutes les valeurs d'un en-tête dans un objetHeaderspour un nom donné. -
Retourne un tableau contenant les valeurs de tous les en-têtes
Set-Cookieassociés à une réponse. Headers.has()-
Retourne un booléen indiquant si un objet
Headerscontient un certain en-tête. Headers.keys()-
Retourne un
iteratorpermettant de parcourir toutes les clés des paires clé/valeur contenues dans cet objet. Headers.set()-
Définit une nouvelle valeur pour un en-tête existant dans un objet
Headers, ou ajoute l'en-tête s'il n'existe pas déjà. Headers.values()-
Retourne un
iteratorpermettant de parcourir toutes les valeurs des paires clé/valeur contenues dans cet objet.
Note :
Pour être clair, la différence entre Headers.set() et Headers.append() est que si l'en-tête défini existe et accepte plusieurs valeurs, Headers.set() va remplacer la valeur existante par la nouvelle, tandis que Headers.append() va ajouter la nouvelle valeur à la fin des autres valeurs. Voir leurs pages dédiées pour des exemples de code.
Note : Lorsque les valeurs d'en-tête sont itérées, elles sont automatiquement triées par ordre alphabétique et les valeurs des noms d'en-tête en double sont combinées.
Exemples
Dans le fragment de code suivant, nous créons un nouvel Header en utilisant le contructeur Headers(), ajoutons un nouvel header à ce dernier en utilisant append(), puis retournons la valeur du header en utilisant get() :
const monEnTete = new Headers();
monEnTete.append("Content-Type", "text/xml");
monEnTete.get("Content-Type"); // doit retourner 'text/xml'
La même chose peut être accomplie en passant un littéral d'objet ou un tableau de tableaux au constructeur.
let mesEnTetes = new Headers({
"Content-Type": "text/xml",
});
// ou, en utilisant un tableau de tableaux
mesEnTetes = new Headers([["Content-Type", "text/xml"]]);
mesEnTetes.get("Content-Type"); // doit retourner 'text/xml'
Spécifications
| Spécification |
|---|
| Fetch> # headers-class> |