Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

XMLHttpRequest : méthode getAllResponseHeaders()

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 juillet 2015.

Note : Cette fonctionnalité est disponible via les Web Workers, sauf pour les Service Workers.

La méthode getAllResponseHeaders() de l'interface XMLHttpRequest retourne tous les en-têtes de réponse, séparés par un CRLF, sous forme de chaîne de caractères, ou null si aucune réponse n'a été reçue.

Si une erreur réseau se produit, une chaîne de caractères vide est retournée.

Note : Pour les requêtes multipart, cela retourne les en-têtes de la partie actuelle de la requête, et non du canal d'origine.

Syntaxe

js
getAllResponseHeaders()

Paramètres

Aucun.

Valeur de retour

Une chaîne de caractères représentant tous les en-têtes de la réponse (sauf ceux dont le nom de champ est Set-Cookie) séparés par un CRLF, ou null si aucune réponse n'a été reçue. Si une erreur réseau se produit, une chaîne de caractères vide est retournée.

Un exemple de ce à quoi ressemble une chaîne de caractères d'en-tête brute :

http
date: Fri, 08 Dec 2017 21:04:30 GMT\r\n
content-encoding: gzip\r\n
x-content-type-options: nosniff\r\n
server: meinheld/0.6.1\r\n
x-frame-options: DENY\r\n
content-type: text/html; charset=utf-8\r\n
connection: keep-alive\r\n
strict-transport-security: max-age=63072000\r\n
vary: Cookie, Accept-Encoding\r\n
content-length: 6502\r\n
x-xss-protection: 1; mode=block\r\n

Chaque ligne se termine par des caractères de retour chariot et de saut de ligne (\r\n). Ce sont essentiellement des délimiteurs séparant chacun des en-têtes.

Note : Dans les navigateurs modernes, les noms des en-têtes sont retournés en minuscules, conformément à la dernière spécification.

Exemples

Cet exemple examine les en-têtes dans l'évènement readystatechange de la requête. Le code montre comment obtenir la chaîne de caractères d'en-têtes brute, ainsi que comment la convertir en un tableau d'en-têtes individuels, puis comment prendre ce tableau et créer une correspondance entre les noms d'en-têtes et leurs valeurs.

js
const requete = new XMLHttpRequest();
requete.open("GET", "toto.txt", true);
requete.send();

requete.onreadystatechange = () => {
  if (requete.readyState === requete.HEADERS_RECEIVED) {
    // Obtient la chaîne de caractères d'en-têtes brute
    const enTetes = requete.getAllResponseHeaders();

    // Convertit la chaîne de caractères d'en-têtes en un tableau
    // d'en-têtes individuels
    const tab = enTetes.trim().split(/[\r\n]+/);

    // Crée une correspondance entre les noms d'en-têtes et leurs valeurs
    const correspondanceEnTetes = {};
    tab.forEach((ligne) => {
      const parties = ligne.split(": ");
      const enTete = parties.shift();
      const valeur = parties.join(": ");
      correspondanceEnTetes[enTete] = valeur;
    });
  }
};

Une fois cela fait, vous pouvez, par exemple :

js
const typeContenu = correspondanceEnTetes["content-type"];

Cela obtient la valeur de l'en-tête Content-Type dans la variable typeContenu.

Spécifications

Spécification
XMLHttpRequest
# the-getallresponseheaders()-method

Compatibilité des navigateurs

Voir aussi