Всі заголовки поділяються на чотири основних групи:
Саме в такому порядку рекомендується надсилати заголовки одержувачу (програмно це не має значення, однак дає зручність при налагодженні). Сутності і, відповідно, їх заголовки можуть перебувати як у запитах, так і у відповідях (при цьому у відповіді деякі заголовки можуть бути присутніми, а в запиті — відсутні або навпаки). Слід зазначити, що деякі заголовки можуть стосуватися відразу кількох груп (наприклад, 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 | |||||
Connection | HTTP/1.1 | Дані про проведенні з'єднання. | Connection: close | |||||
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 | |||||
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 | Параметри аутентифікації для виконання методу до вказаного ресурсу. |
* Значення у колонці «Поява»:
Основні заголовки (англ. General Headers) є основними для запитів клієнта і відповідей сервера. Більша частина з них є обов'язковими.
Заголовки запиту (англ. Request Headers) використовуються в запитах клієнта.
Повний чи відносний URI ресурсу, з якого клієнт зробив поточний запит. Якщо вказаний відносний, то повний визначається за запитуваним URI. Клієнти не повинні включати значення Referer покажчик фрагмента (частина URI після символу решітки «#»). Також не можна включати посилання на ресурси, що не мають власного URI (наприклад, введення з клавіатури адреси).
Приклади:
Referer: http://www.example.com/
— повний URI до кореня сайту.Referer: http://www.example.org/send-message.php?to=support
— приклад з параметрами.Referer: /news/2007/08/23/
— вказівка відносного URI.Referer: http://127.0.0.1/foo/bar-rules.html
— такий варіант допустимий.Referer: ftp://storage.example.com/archive/foo-notes.htm
— перехід не з HTTP-ресурсу.Вказує програмне забезпечення клієнта та його характеристики. Аналогічним йому є Server для серверів і Via для проксі.
Заголовки відповіді (англ. Response Headers) включаються тільки у відповіді сервера.
Список підтримуваних методів всього сервера або конкретного ресурсу. Надсилається сервером разом зі статусами 405 і 501, а також у відповіді на метод OPTIONS.
Приклад: Allow: GET, HEAD, OPTIONS
Заголовки сутності (англ. Entity Headers) — заголовки, які супроводжують кожну сутність як в запитах клієнта, так і у відповідях сервера. Однак, наявність деяких не має сенсу в заголовках запитів (наприклад, Expires). В окремий клас заголовки сутності виділені для того, щоб не плутати їх з заголовками запиту або заголовками відповіді при передачі множинного вмісту (multipart/*). Заголовки запиту і відповіді, як і основні заголовки, описують всі повідомлення в цілому та розміщуються тільки в початковому блоці заголовків, у той час як заголовки сутності характеризують вміст кожної частини окремо розташовуючись безпосередньо перед її тілом.
Вказує один або кілька природних мов вмісту, для носіїв яких вона призначається. Мови перераховуються через кому, порядок не має значення. Якщо цей заголовок опущений, то передбачається, що вміст призначений для людей, які розуміють будь-яку мову (або ж мова взагалі не має значення). При цьому можливо, що людина не знайде там інформацію зрозумілою йому мовою.
Зверніть увагу, що у цьому полі слід вказувати не всі використовувані у документі мови, а тільки ті, які розуміє кінцевий користувач. Наприклад, якщо це сторінка підручника з англійської мови для україномовної аудиторії, то слід вказувати тільки українську мову, бо для англомовних людей вона не потрібна. А якщо це сторінка з повідомленням про помилку двома мовами, то потрібно вказувати обидві.
В RFC сказано, що мова вмісту може вказувати для будь-яких медіатипів, а не тільки для тексту.
Наприклад, якщо це відео, де люди говорять англійською, де збоку розташовано віконце з сурдоперекладом на амслені, а внизу розташований переклад субтитрами українською, то заголовок Content-Language повинен мати значення «en, ase, uk
».
При цьому, якщо це відео, де герої говорять японською, і присутній голосовий переклад українською, то слід вказати лише українську мову, бо японцям, найімовірніше, буде важко розчути рідну мову.
Заголовок Content-Language описаний не тільки в основних специфікаціях по протоколу HTTP, але і в окремій RFC 3282 «Content-Language Headers». Всі назви мов реєструються в IANA. Посилання на їх реєстр ви знайдете в цій статті.
Основні RFC по протоколу HTTP:
Матеріали з натуральним мов: