Класс Headers

Класс Headers описывает HTTP-заголовки запроса или ответа сервера. Получить доступ к заголовкам позволяет свойство headers объектов Request и Response. Формат конструктора:

<Объект> = new Headers([<Объект>])

В необязательном параметре можно указать объект с заголовками и их значениями или объект Headers (в этом случае создается копия объекта):

let headers = new Headers({
   'Content-Type': 'application/x-www-form-urlencoded'
});
console.log( headers.get('Content-Type') );
// application/x-www-form-urlencoded
let headers2 = new Headers(headers);
console.log( headers2.get('Content-Type') );
// application/x-www-form-urlencoded

Класс Headers содержит следующие методы:

  • get(<Ключ>) — возвращает значение заголовка с указанным именем. Регистр не имеет значения. Если заголовок не найден, то возвращается значение null:
let headers = new Headers({
   'Content-Type': 'application/x-www-form-urlencoded'
});
console.log( headers.get('Content-Type') );
// application/x-www-form-urlencoded
console.log( headers.get('content-type') );
// application/x-www-form-urlencoded
console.log( headers.get('Content-Length') );
// null

Если заголовков с указанным именем несколько, то получим все значения через запятую:

let headers = new Headers();
headers.append('Accept-Encoding', 'deflate');
headers.append('Accept-Encoding', 'gzip');
console.log( headers.get('Accept-Encoding') );
// deflate,gzip
  • keys() — возвращает итератор, позволяющий перебрать все названия заголовков:
let headers = new Headers({
   'Content-Type': 'image/jpeg',
   'Content-Length': 15012
});
for ( let key of headers.keys() ) {
   console.log( key + ' => ' + headers.get(key) );
}
// content-length => 15012
// content-type => image/jpeg
  • values() — возвращает итератор, позволяющий перебрать все значения заголовков:
let headers = new Headers({
   'Content-Type': 'image/jpeg',
   'Content-Length': 15012
});
for ( let value of headers.values() ) {
   console.log( value );
}
// 15012
// image/jpeg
  • entries() — возвращает итератор, позволяющий перебрать все названия и значения заголовков:
let headers = new Headers({
   'Content-Type': 'image/jpeg',
   'Content-Length': 15012
});
for ( let pair of headers.entries() ) {
   console.log( pair[0] + ' => ' + pair[1] );
}
// content-length => 15012
// content-type => image/jpeg

При использовании цикла for...of мы можем опустить вызов метода entries():

for ( let pair of headers ) {
   console.log( pair );
   console.log( pair[0] + ' => ' + pair[1] );
}
// Array [ "content-length", "15012" ]
// content-length => 15012
// Array [ "content-type", "image/jpeg" ]
// content-type => image/jpeg
for ( let [key, value] of headers ) {
   console.log( key + ' => ' + value );
}
  • forEach(<Функция>) — вызывает функцию для каждого заголовка. Через первый параметр доступно значение, а через второй — название:
let headers = new Headers({
   'Content-Type': 'image/jpeg',
   'Content-Length': 15012
});
headers.forEach( function(value, key) {
   console.log( key + ' => ' + value );
});
// content-length => 15012
// content-type => image/jpeg
  • has(<Ключ>) — возвращает значение true, если заголовок с указанным именем существует, и false — в противном случае:
let headers = new Headers({
   'Content-Type': 'image/jpeg'
});
console.log( headers.has('Content-Type') );    // true
console.log( headers.has('Content-Length') );  // false
  • set(<Ключ>, <Значение>) — задает новое значение для указанного заголовка. Если заголовок существует, то его значение будет заменено. Если заголовок отсутствует, то он будет добавлен:
let headers = new Headers();
headers.set('Accept-Encoding', 'deflate');
headers.set('Accept-Encoding', 'gzip');
console.log( headers.get('Accept-Encoding') );  // gzip
  • append(<Ключ>, <Значение>) — добавляет заголовок с указанным значением не изменяя значение одноименного существующего заголовка. Если заголовок отсутствует, то он будет добавлен:
let headers = new Headers();
headers.append('Accept-Encoding', 'deflate');
headers.append('Accept-Encoding', 'gzip');
console.log( headers.get('Accept-Encoding') );  // deflate,gzip
  • delete(<Ключ>) — удаляет все заголовки с указанным именем:
let headers = new Headers({
   'Content-Type': 'image/jpeg',
   'Content-Length': 15012
});
headers.delete('Content-Length');
console.log( headers.has('Content-Type') );    // true
console.log( headers.has('Content-Length') );  // false

Выведем в консоль заголовки, отправленные сервером вместе с файлом:

fetch('/img/img_w200h200.jpg')
   .then( function(response) {
      for ( let [key, value] of response.headers ) {
         console.log( key + ' => ' + value );
      }
   });
На заметку

Учебник по jQuery и AJAX
Учебник по jQuery и AJAX в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов