Метод XMLHttpRequest: getAllResponseHeaders()
Базовая поддержка Широко распространена
Данная функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Примечание: Данная функция доступна в Веб-воркерах, за исключением Сервис-воркеров.
Метод XMLHttpRequest getAllResponseHeaders() возвращает все заголовки ответа, разделённые CRLF, в виде строки, или возвращает null если ответ ещё не получен.
Если произошла ошибка сети, возвращается пустая строка.
Примечание: Для запросов с несколькими частями (multipart) этот метод возвращает заголовки текущей части запроса, а не исходного канала.
Синтаксис
getAllResponseHeaders()
Параметры
Нет.
Возвращаемое значение
Строка, представляющая все заголовки ответа (кроме тех, чьё имя поля равно Set-Cookie), разделённые CRLF, или null если ответ ещё не получен. При ошибке сети возвращается пустая строка.
Пример того, как выглядит исходная строка заголовков:
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
Каждая строка завершается символами возврата каретки и перевода строки (\r\n). Они служат разделителями между заголовками.
Примечание: В современных браузерах имена заголовков возвращаются в нижнем регистре, согласно последнему спецификации.
Примеры
В этом примере рассматриваются заголовки в событии readystatechange запроса. Код демонстрирует, как получить исходную строку заголовков, а также как преобразовать её в массив отдельных заголовков, а затем использовать этот массив для создания отображения имён заголовков и их значений.
const request = new XMLHttpRequest();
request.open("GET", "foo.txt", true);
request.send();
request.onreadystatechange = () => {
if (request.readyState === this.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;
});
}
};
После этого можно, например:
const contentType = headerMap["content-type"];
Это получит значение заголовка Content-Type в переменную contentType.
Спецификации
| Спецификация |
|---|
| XMLHttpRequest # the-getallresponseheaders()-method |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
getAllResponseHeaders |
1 | 12 | 1Начиная с Firefox 49, пустые заголовки возвращаются как пустые строки, если значение предпочтенияnetwork.http.keep_empty_response_headers_as_empty_string установлено в true, по умолчанию false. До Firefox 49 пустые заголовки игнорировались. Начиная с Firefox 50, значение по умолчанию true. |
≤12.1 | 1.2 | 18 | 4Начиная с Firefox для Android 49, пустые заголовки возвращаются как пустые строки, если значение предпочтенияnetwork.http.keep_empty_response_headers_as_empty_string установлено в true, по умолчанию false. До Firefox для Android 49 пустые заголовки игнорировались. Начиная с Firefox для Android 50, значение по умолчанию true. |
≤12.1 | 1 | 1.0 | 4.4 |
header_names_lowercase |
60 | 79 | 64 | 47 | 11 | 60 | 64 | 44 | 11 | 8.0 | 60 |
См. также
- Использование XMLHttpRequest
- Установка заголовков запроса:
setRequestHeader()
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders