XMLHttpRequest: getAllResponseHeaders() Methode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Hinweis: Diese Funktion ist in Web Workers verfügbar, mit Ausnahme von Service Workers.

Die Methode getAllResponseHeaders() des XMLHttpRequest gibt alle Antwort-Header, getrennt durch CRLF, als String zurück oder null, wenn keine Antwort empfangen wurde.

Wenn ein Netzwerkfehler aufgetreten ist, wird ein leerer String zurückgegeben.

Hinweis: Bei Multipart-Anfragen gibt dies die Header des aktuellen Teils der Anfrage zurück, nicht vom ursprünglichen Kanal.

Syntax

js
getAllResponseHeaders()

Parameter

Keine.

Rückgabewert

Ein String, der alle Antwort-Header (außer jene, deren Feldname Set-Cookie ist) getrennt durch CRLF repräsentiert, oder null, wenn keine Antwort empfangen wurde. Wenn ein Netzwerkfehler aufgetreten ist, wird ein leerer String zurückgegeben.

Ein Beispiel, wie ein Roh-Header-String aussieht:

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

Jede Zeile wird sowohl durch Wagenrücklaufzeichen als auch Zeilenumbruchszeichen abgeschlossen (\r\n). Diese fungieren im Wesentlichen als Trennzeichen, die jeden der Header trennen.

Hinweis: In modernen Browsern werden die Header-Namen gemäß der neuesten Spezifikation in Kleinbuchstaben zurückgegeben.

Beispiele

Dieses Beispiel untersucht die Header im readystatechange-Event der Anfrage. Der Code zeigt, wie man den Roh-Header-String erhält, sowie wie man ihn in ein Array einzelner Header umwandelt und dann wie man dieses Array verwendet, um eine Zuordnung von Header-Namen zu ihren Werten zu erstellen.

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

request.onreadystatechange = () => {
  if (request.readyState === request.HEADERS_RECEIVED) {
    // Get the raw header string
    const headers = request.getAllResponseHeaders();

    // Convert the header string into an array
    // of individual headers
    const arr = headers.trim().split(/[\r\n]+/);

    // Create a map of header names to values
    const headerMap = {};
    arr.forEach((line) => {
      const parts = line.split(": ");
      const header = parts.shift();
      const value = parts.join(": ");
      headerMap[header] = value;
    });
  }
};

Nachdem dies getan wurde, können Sie beispielsweise:

js
const contentType = headerMap["content-type"];

Dies erhält den Wert des Content-Type-Headers in die Variable contentType.

Spezifikationen

Specification
XMLHttpRequest
# the-getallresponseheaders()-method

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch