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
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 :
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.
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 :
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
- Utiliser XMLHttpRequest
- Définir les en-têtes de requête :
setRequestHeader()