aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/api/headers/index.md
blob: 8219532411ed1ad0a1a0a718f38ade42ec45cb1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
---
title: Headers
slug: Web/API/Headers
tags:
  - API
  - Experimental
  - Fetch
  - Fetch API
  - Headers
  - Headers API
  - Interface
  - Reference
translation_of: Web/API/Headers
---
{{APIRef("Fetch API")}}

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. Un objet `Headers` a une liste `Headers` associée qui est vide lors de l'initialisation et qui est constituée de zéro ou plusieurs paires de noms et de valeurs. Vous pouvez en ajouter via les méthodes comme{{domxref("Headers.append","append()")}} (see {{anch("Examples")}}.)  Dans toutes les méthodes de cette interface, les noms des `Headers` sont reliés à une séquence d'octets sensible à la case.

Pour des raisons de sécurité, les `Headers` ci-dessous peuvent être controlés uniquement par l'User Agent : {{Glossary("Forbidden_header_name", "forbidden header names", 1)}}  et {{Glossary("Forbidden_response_header_name", "forbidden response header names", 1)}}.

Un objet `Headers` a aussi une garde associée, qui prend la valeur `immutable`, `request`, `request-no-cors`, `reponse`, or `none`. Cela affecte si les méthodes {{domxref("Headers.set","set()")}}, {{domxref("Headers.delete","delete()")}}, et {{domxref("Headers.append","append()")}}  vont modifier le `Header`. Pour plus d'informations voir {{Glossary("Guard")}}.

Vous pouvez récuperer un objet `Header` via les propriétés {{domxref("Request.headers")}} et {{domxref("Response.headers")}} et créer un nouvel objet `Header` en utilisant le constructeur {{domxref("Headers.Headers()")}}.

Un objet implémentant `Headers` peut directement être utilisé dans une structure {{jsxref("Statements/for...of", "for...of")}}, au lieu de{{domxref('Headers.entries()', 'entries()')}}: `for (var p of myHeaders)` est équivalent à `for (var p of myHeaders.entries())`.

> **Note :** Vous pouvez trouver plus d'informations à propos des Headers disponibles en lisant la page suivante : [HTTP headers](/en-US/docs/Web/HTTP/Headers).

## Constructeur

- {{domxref("Headers.Headers()", "Headers()")}}
  - : Crée un nouvel objet `Headers`.

## Méthodes

- {{domxref("Headers.append()")}}
  - : Ajoute une nouvelle valeur à un Header existant dans un objet `Headers`, ou ajoute le header s'il n'existe pas déjà.
- {{domxref("Headers.delete()")}}
  - : Supprime un header dans un objet `Headers`.
- {{domxref("Headers.entries()")}}
  - : Retourne un {{jsxref("Iteration_protocols","iterator")}} permettant d'acceder à toutes les paires clef/valeur contenue dans cet objet.
- {{domxref("Headers.forEach()")}}
  - : Exécute une fonction fournie une fois pour chaque élément du tableau.
- {{domxref("Headers.get()")}}
  - : Retourne une séquence {{domxref("ByteString")}} de toutes les valeurs d'un Header dans un objet `Headers` avec un nom donné.
- {{domxref("Headers.has()")}}
  - : Retourne un booléen indiquant si un objet `Headers` contient un certain header.
- {{domxref("Headers.keys()")}}
  - : Retourne un  {{jsxref("Iteration_protocols", "iterator")}} permettant de parcourir toutes les clefs des paires clef/valeur contenues dans cet objet.
- {{domxref("Headers.set()")}}
  - : Définti une nouvelle valeur pour un header existant dans un objet `Headers`, ou ajoute le header s'il n'existe pas déjà.
- {{domxref("Headers.values()")}}
  - : Retourne un {{jsxref("Iteration_protocols", "iterator")}} permettant de parcourir toutes les valeurs des paires clefs/valeur contenues dans cet objet.

> **Note :** Pour être clair, la différence entre {{domxref("Headers.set()")}} et {{domxref("Headers.append()")}} est que si le header spécifié existe et accepte plusieurs valeurs,  {{domxref("Headers.set()")}} va remplacer la valeur existante par la nouvelle, tandis que {{domxref("Headers.append()")}} va ajouter la nouvelle valeur à la fin des autres valeurs. Voir leurs pages dédiées pour des exemples de code.

> **Note :** Toutes les méthodes Headers vont retourner `TypeError` si vous essayez de passer dans une réfférenceun nom qui n'est pas un [nom de Header HTTP valide](https://fetch.spec.whatwg.org/#concept-header-name). Les opérations de mutation vont retourner `TypeError` si le header a un {{Glossary("Guard")}} immuable. Dans tous les autres cas, les erreurs sont silencieuses.

> **Note :** Lorsque les valeurs d'en-tête sont itérées, elles sont automatiquement triées par ordre lexicographique et les valeurs des noms d'en-tête en double sont combinées.

### Méthodes obsolètes

- {{domxref("Headers.getAll()")}}
  - : Utilisée pour retourner un array de toutes les valeurs d'un header dans un objet `Headers` avec un nom donné. Cette méthode est maintenant supprimée des standards, et {{domxref("Headers.get()")}} retourne maintenant toutes les valeurs d'un nom donné au lieu du premier seulement.

## 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()` :

```js
var monHeader = new Headers();

monHeader.append('Content-Type', 'text/xml');
monHeader.get('Content-Type') // doit retourner 'text/xml'
```

La même chose peut être accomplie en passant par un array d'array un littéral d'objet au constructeur.

```js
var mesHeaders = new Headers({
    'Content-Type': 'text/xml'
});

// ou, en utilisant un array d'array
mesHeaders = new Headers([
    ['Content-Type', 'text/xml']
]);

mesHeaders.get('Content-Type') // doit retourner 'text/xml'
```

## Caractéristiques

| Caractéristiques                                                 | Statut                   | Commentaires |
| ---------------------------------------------------------------- | ------------------------ | ------------ |
| {{SpecName('Fetch','#headers-class','Headers')}} | {{Spec2('Fetch')}} |              |

## Compatibilité des navigateurs

{{Compat("api.Headers")}}

## Voir aussi

- [API ServiceWorker](/en-US/docs/Web/API/ServiceWorker_API)
- [HTTP access control (CORS)](/en-US/docs/Web/HTTP/Access_control_CORS)
- [HTTP](/en-US/docs/Web/HTTP)