Список заголовків HTTP

стаття-список у проєкті Вікімедіа
У даній статті описуються конкретні заголовки протоколу HTTP.
Загальні відомості по заголовкам дивіться у статті Заголовки HTTP.

Всі заголовки поділяються на чотири основних групи:

  1. General Headers — (укр. Загальні заголовки) — використовуються в запитах і відповідях.
  2. Request Headers — (укр. Заголовки запиту) — використовуються в запитах.
  3. Response Headers — (укр. Заголовки відповіді) — використовуються тільки у відповідях.
  4. Entity Headers — (укр. Заголовки сутності) — супроводжують кожну сутність повідомлення. Використовуються в запитах і відповідях.

Саме в такому порядку рекомендується надсилати заголовки одержувачу (програмно це не має значення, однак дає зручність при налагодженні). Сутності і, відповідно, їх заголовки можуть перебувати як у запитах, так і у відповідях (при цьому у відповіді деякі заголовки можуть бути присутніми, а в запиті — відсутні або навпаки). Слід зазначити, що деякі заголовки можуть стосуватися відразу кількох груп (наприклад, Content-Disposition).

Оглядова таблиця ред.

У оглядовій таблиці нижче кожний рядок даних відповідає конкретному заголовку, а частина стовпців відведена під їх групи. Таблиця була складена на основі аналізу зафіксованих у RFC полів заголовка. Така матриця була зроблена для людей, яким важлива сумісність версій і динаміка. З виходом оновлення протоколу деякі заголовки переносилися з однієї групи в іншу (закресленим «Так» зазначено, куди вони входили до цього). Деякі заголовки були повністю виключені, і за закресленим «Так» можна дізнатися, до якої групи вони перебували перед виключенням. У деяких заголовків є кілька закреслених «Так» (наприклад, URI) — такі заголовки спочатку були введені в одній групі, потім перенесені, а пізніше зовсім скасовані. У колонці «Заголовок» також є своє кодування. Наприклад, повністю виключені заголовки закреслені, а пропоновані до виключення позначені курсивом.

Легенда ред.

Коротке позначення Трактування
Заголовок зараз стосується зазначеної в колонці групі.
Заголовок ніколи не ставився до цієї групи.
Заголовок раніше ставився до даної групи. Якщо в рядку є зелене «Так», то його перекинули в іншу групу (закреслене — звідки був перекинутий). Якщо ж у рядку тільки закреслене «Та» звичайне «Ні», то заголовок взагалі був прибраний. Якщо кілька закреслених, то заголовок переносився, а потім був взагалі прибраний.
Говорить про сумніви. Якщо в рядку тільки «Ні», то значить заголовок тільки збираються включити в протокол (при цьому можна використовувати). Якщо в рядку є ще і «Так», то хочуть перенести його в іншу групу, але ще остаточно не вирішено.

Дані ред.

Заголовок Основні заголовки Запит Віповідь Поява* Прзиначення Приклад
RqH EH RsH EH
Accept HTTP/1.0 Список допустимих форматів ресурсу. Accept: text/plain
Accept-Charset HTTP/1.0 Перелік підтримуваних кодувань для представлення користувачу. Accept-Charset: utf-8
Accept-Encoding HTTP/1.0 Перелік підтримуваних способів кодування вмісту сутності при передачі. Accept-Encoding: <compress | gzip | deflate | sdch | identity>
Accept-Language HTTP/1.0 Список підтримуваних природних мов. Accept-Language: uk
Accept-Ranges HTTP/1.1 Перелік одиниць вимірювання діапазонів. Accept-Ranges: bytes
Age HTTP/1.1 кількість секунд з моменту модифікації ресурсу.
Allow HTTP/1.0 Список підтримуваних методів. Allow: OPTIONS, GET, HEAD
Alternates HTTP/1.1 Вказівка на альтернативні способи представлення ресурсу.
Authorization HTTP-Auth Данні для авторизації. Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cache-Control HTTP/1.1 Основні директиви для керування кешуванням. Cache-Control: no-cache

Cache-Control: no-store
Cache-Control: max-age=3600
Cache-Control: max-stale=0
Cache-Control: min-fresh=0
Cache-Control: no-transform
Cache-Control: only-if-cached
Cache-Control: cache-extension

Connection HTTP/1.1 Дані про проведенні з'єднання. Connection: close
Content-Base HTTP/1.1 Дані про постійне місце ресурсу. Прибрано в HTTP/1.1v2.
Content-Disposition CDH Спосіб розподілення сутностей в повідомленні при передачі кількох фрагментів. Content-Disposition: form-data; name="MessageTitle"

Content-Disposition: form-data; name="AttachedFile1"; filename="photo-1.jpg"

Content-Encoding HTTP/1.0 Спосіб кодування вмісту сутності при передачі.
Content-Language HTTP/1.0 Один або кілька природних мов вмісту сутності. Content-Language: en, ase, uk
Content-Length HTTP/1.0 Розмір вмісту сутності в октетах (зазвичай їх називають байтами). Content-Length: 1348
Content-Location HTTP/1.1 Альтернативне розташування вмісту сутності.
Content-MD5 MD5H Base64 MD5-хешу сутності для перевірки цілісності. Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Range HTTP/1.1 Байтові діапазони сутності, що передається якщо повертається фрагмент. Content-Range: bytes 88080384-160993791/160993792
Content-Type HTTP/1.0 Формат і спосіб представлення сутності. Content-Type: text/html;charset=utf-8
Content-Version HTTP/1.1 Інформація про поточну версію сутності.
Date HTTP/1.0 Дата генерації відгуку. Date: Tue, 15 Nov 1994 08:12:31 GMT
Derived-From HTTP/1.1 Інформація про поточну версію сутності. [?]
ETag HTTP/1.1 Тег (унікальний ідентифікатор) версії сутності, що використовується при кешуванні. ETag: "56d-9989200-1132c580"
Expect HTTP/1.1v2 Вказує серверу що клієнт очікує від нього додаткової дії. Expect: 100-continue
Expires HTTP/1.0 Дата закінчення терміну актуальності сутності. Expires: Tue, 31 Jan 2012 15:02:53 GMT
From HTTP/1.1 Адрес електронної пошти відповідальної особи з боку клієнту. From: user@example.com
Host HTTP/1.1 Доменне ім'я і порт хосту ресурсу, що опитується. Необхідно для підтримки віртуального хостингу на серверах. Host: uk.wikipedia.org
If-Match HTTP/1.1 Список тегів версій сутності. Виконувати метод, якщо вони існують. If-Match: "737060cd8c284d8af7ad3082f209582d"
If-Modified-Since HTTP/1.0 Дата. Виконувати метод якщо сутність змінилась з вказаного моменту. If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
If-None-Match HTTP/1.1 Список тегів версій сутності. Виконувати метод якщо жодного з них не існує. If-None-Match: "737060cd8c284d8af7ad3082f209582d"
If-Range HTTP/1.1 Список тегів версій сутності або дата для вибраного фрагменту сутності. If-Range: "737060cd8c284d8af7ad3082f209582d"
If-Unmodified-Since HTTP/1.1 Дата. Виконувати метод якщо сутність не змінилась з вказаної дати. If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT
Last-Modified HTTP/1.0 Дата останньої модифікації сутності.
Link HTTP/1.0 вказує на логічно зв'язаний з сутністю ресурс аналогічно тегу <LINK> в HTML.
Location HTTP/1.0 URI за яким клієнту треба перейти або URI ресурсу, що створюється. Location: http://example.com/about.html#contacts[недоступне посилання з липня 2019]
Max-Forwards HTTP/1.1 Максимально допустима кількість переходів через проксі. Max-Forwards: 10
MIME-Version MIME Версія протоколу MIME, по якому було сформовано повідомлення.
Pragma HTTP/1.0 Особливі опції виконання. Pragma: no-cache
Proxy-Authenticate HTTP-Auth Параметри аутентифікації на проксі-сервері.
Proxy-Authorization HTTP-Auth Інформація для авторизації на проксі-сервері. Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Public HTTP/1.1 Список доступних методів аналогічно Allow, але для всього серверу.
Range HTTP/1.1 Байтові діапазони для запиту фрагментів ресурсу. Більше тут: Часткові GET. Range: bytes=50000-99999,250000-399999,500000-
Referer HTTP/1.0 URI ресурсу, після котрого клієнт зробив поточний запит. Referer: http://en.wikipedia.org/wiki/Main_Page
Retry-After HTTP/1.0 Дата або час в секундах після якого можна повторити запит.
Server HTTP/1.0 Список назв і версій вебсерверу і його компонентів з коментарями. Для проксі-серверів поле Via. Server: Apache/2.2.17 (Win32) PHP/5.3.5
Title HTTP/1.0 Заголовок сутності.
TE HTTP/1.1v2 Список розширених способів кодування при передачі. TE: trailers, deflate
Trailer HTTP/1.1v2 Список полів, що мають стосунок до кодування повідомлення при передачі.
Transfer-Encoding HTTP/1.1 Список способів кодування, котрі були використані до повідомлення для передачі. Transfer-Encoding: chunked
Upgrade HTTP/1.1 Список протоколів, що пропонуються клієнтом. Сервер вказує один протокол. Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
URI HTTP/1.0 Список URI. В HTTP/1.1 замінено на Location, Content-Location, Vary і Link.
User-Agent HTTP/1.0 Список назв і версій клієнту і його компонентів з коментарями. User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Vary HTTP/1.1 Список полів з запиту, що описують ресурс, і котрі були прийняті до уваги.
Via HTTP/1.1 Список версій протоколу, назв і версій проксі-серверів, через котрих пройшло повідомлення. Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning HTTP/1.1 Код, агент, повідомлення і дата, якщо виникла критична ситуація. Warning: 199 Miscellaneous warning
WWW-Authenticate HTTP-Auth Параметри аутентифікації для виконання методу до вказаного ресурсу.

* Значення у колонці «Поява»:

  • HTTP/1.0 — RFC 1945 («Hypertext Transfer Protocol — HTTP/1.0»).
  • HTTP/1.1 — RFC 2068 («Hypertext Transfer Protocol — HTTP/1.1»).
  • HTTP/1.1v2 — RFC 2616 («Hypertext Transfer Protocol — HTTP/1.1»).
  • HTTP-Auth — RFC 2617 («HTTP Authentication: Basic and Digest Access Authentication»).
  • MD5H — RFC 1965 («The Content-MD5 Header Field»).
  • CDH — RFC 1806 («Communicating Presentation Information in Internet Messages: The Content-Disposition Header»).
  • MIME — RFC 2045 («Multipurpose Internet Mail Extensions Part One: Format of Internet Message Bodies»).

Основні заголовки ред.

Основні заголовки (англ. General Headers) є основними для запитів клієнта і відповідей сервера. Більша частина з них є обов'язковими.

Заголовки запиту ред.

Заголовки запиту (англ. Request Headers) використовуються в запитах клієнта.

Referer ред.

Повний чи відносний URI ресурсу, з якого клієнт зробив поточний запит. Якщо вказаний відносний, то повний визначається за запитуваним URI. Клієнти не повинні включати значення Referer покажчик фрагмента (частина URI після символу решітки «#»). Також не можна включати посилання на ресурси, що не мають власного URI (наприклад, введення з клавіатури адреси).

Приклади:

User-Agent ред.

Вказує програмне забезпечення клієнта та його характеристики. Аналогічним йому є Server для серверів і Via для проксі.

Заголовки відповіді ред.

Заголовки відповіді (англ. Response Headers) включаються тільки у відповіді сервера.

Allow ред.

Список підтримуваних методів всього сервера або конкретного ресурсу. Надсилається сервером разом зі статусами 405 і 501, а також у відповіді на метод OPTIONS.

Приклад: Allow: GET, HEAD, OPTIONS

Заголовки сутності ред.

Заголовки сутності (англ. Entity Headers) — заголовки, які супроводжують кожну сутність як в запитах клієнта, так і у відповідях сервера. Однак, наявність деяких не має сенсу в заголовках запитів (наприклад, Expires). В окремий клас заголовки сутності виділені для того, щоб не плутати їх з заголовками запиту або заголовками відповіді при передачі множинного вмісту (multipart/*). Заголовки запиту і відповіді, як і основні заголовки, описують всі повідомлення в цілому та розміщуються тільки в початковому блоці заголовків, у той час як заголовки сутності характеризують вміст кожної частини окремо розташовуючись безпосередньо перед її тілом.

Content-Language ред.

Вказує один або кілька природних мов вмісту, для носіїв яких вона призначається. Мови перераховуються через кому, порядок не має значення. Якщо цей заголовок опущений, то передбачається, що вміст призначений для людей, які розуміють будь-яку мову (або ж мова взагалі не має значення). При цьому можливо, що людина не знайде там інформацію зрозумілою йому мовою.

Зверніть увагу, що у цьому полі слід вказувати не всі використовувані у документі мови, а тільки ті, які розуміє кінцевий користувач. Наприклад, якщо це сторінка підручника з англійської мови для україномовної аудиторії, то слід вказувати тільки українську мову, бо для англомовних людей вона не потрібна. А якщо це сторінка з повідомленням про помилку двома мовами, то потрібно вказувати обидві.

В RFC сказано, що мова вмісту може вказувати для будь-яких медіатипів, а не тільки для тексту. Наприклад, якщо це відео, де люди говорять англійською, де збоку розташовано віконце з сурдоперекладом на амслені, а внизу розташований переклад субтитрами українською, то заголовок Content-Language повинен мати значення «en, ase, uk». При цьому, якщо це відео, де герої говорять японською, і присутній голосовий переклад українською, то слід вказати лише українську мову, бо японцям, найімовірніше, буде важко розчути рідну мову.

Заголовок Content-Language описаний не тільки в основних специфікаціях по протоколу HTTP, але і в окремій RFC 3282 «Content-Language Headers». Всі назви мов реєструються в IANA. Посилання на їх реєстр ви знайдете в цій статті.

Див. також ред.

Посилання ред.

Основні RFC по протоколу HTTP:

Матеріали з натуральним мов: