Список заголовків HTTP
Всі заголовки поділяються на чотири основних групи:
- General Headers — (укр. Загальні заголовки) — використовуються в запитах і відповідях.
- Request Headers — (укр. Заголовки запиту) — використовуються в запитах.
- Response Headers — (укр. Заголовки відповіді) — використовуються тільки у відповідях.
- Entity Headers — (укр. Заголовки сутності) — супроводжують кожну сутність повідомлення. Використовуються в запитах і відповідях.
- У даній статті описуються конкретні заголовки протоколу HTTP.
Загальні відомості по заголовкам дивіться у статті Заголовки HTTP.
Саме в такому порядку рекомендується надсилати заголовки одержувачу (програмно це не має значення, однак дає зручність при налагодженні). Сутності і, відповідно, їх заголовки можуть перебувати як у запитах, так і у відповідях (при цьому у відповіді деякі заголовки можуть бути присутніми, а в запиті — відсутні або навпаки). Слід зазначити, що деякі заголовки можуть відноситися відразу до кількох груп (наприклад, 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%5Bнедоступне+посилання+з+липня+2019%5D | |||||
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 | Параметри аутентифікації для виконання методу до вказаного ресурсу. |
* Значення у колонці «Поява»:
- 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 (наприклад, введення з клавіатури адреси).
Приклади:
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-ресурсу.
User-Agent
Вказує програмне забезпечення клієнта та його характеристики. Аналогічним йому є Server для серверів і Via для проксі.
Заголовки відповіді
Заголовки відповіді (англ. Response Headers) включаються тільки у відповіді сервера.
Заголовки сутності
Заголовки сутності (англ. Entity Headers) — заголовки, які супроводжують кожну сутність як в запитах клієнта, так і у відповідях сервера. Тим не менш, наявність деяких не має сенсу в заголовках запитів (наприклад, Expires). В окремий клас заголовки сутності виділені для того, щоб не плутати їх з заголовками запиту або заголовками відповіді при передачі множинного вмісту (multipart/*). Заголовки запиту і відповіді, як і основні заголовки, описують всі повідомлення в цілому та розміщуються тільки в початковому блоці заголовків, у той час як заголовки сутності характеризують вміст кожної частини окремо розташовуючись безпосередньо перед її тілом.
Content-Language
Вказує один або кілька природних мов вмісту, для носіїв яких вона призначається. Мови перераховуються через кому, порядок не має значення. Якщо даний заголовок опущений, то передбачається, що вміст призначений для людей, які розуміють будь-яку мову (або ж мова взагалі не має значення). При цьому можливо, що людина не знайде там інформацію зрозумілою йому мовою.
Зверніть увагу, що у цьому полі слід вказувати не всі використовувані у документі мови, а тільки ті, які розуміє кінцевий користувач. Наприклад, якщо це сторінка підручника з англійської мови для україномовної аудиторії, то слід вказувати тільки українську мову, бо для англомовних людей вона не потрібна. А якщо це сторінка з повідомленням про помилку двома мовами, то потрібно вказувати обидві.
В RFC сказано, що мова вмісту може вказувати для будь-яких медіатипів, а не тільки для тексту.
Наприклад, якщо це відео, де люди говорять англійською, де збоку розташовано віконце з сурдоперекладом на амслені, а внизу розташований переклад субтитрами українською, то заголовок Content-Language повинен мати значення «en, ase, uk
».
При цьому, якщо це відео, де герої говорять японською, і присутній голосовий переклад українською, то слід вказати лише українську мову, бо японцям, швидше за все, буде важко розчути рідну мову.
Заголовок Content-Language описаний не тільки в основних специфікаціях по протоколу HTTP, але і в окремій RFC 3282 «Content-Language Headers». Всі назви мов реєструються в IANA. Посилання на їх реєстр ви знайдете в цій статті.
Див. також
- Протокол HTTP
- Список кодів стану HTTP
- Заголовок User-Agent — окрема стаття
- Cookie
Посилання
Основні RFC по протоколу HTTP:
- RFC 2616 Draft standard «Hypertext Transfer Protocol — HTTP/1.1» (англ.)(англ.) (укр. «Протокол передачі гіпертексту HTTP/1.1»); IETF, червень 1999; Fielding Roy (UC Irvine), Gettys Jim (Compaq/W3C), Mogul J. (Compaq), Frystyk Henrik (MIT/W3C), Masinter L. (Xerox), Leach P. (Microsoft), Berners-Lee Tim (W3C/MIT) — оновлення протоколу HTTP версії 1.1.
- RFC 2068 Proposed standard «Hypertext Transfer Protocol — HTTP/1.1» (англ.)(англ.) (укр. «Протокол передачі гіпертексту HTTP/1.1»); IETF, січень 1997; Fielding Roy (UC Irvine), Gettys Jim (DEC), Mogul J. (DEC), Frystyk Henrik (MIT/LCS), Berners-Lee Tim (MIT/LCS) — рання специфікація по HTTP версії 1.1.
- RFC 1945 Informational «Hypertext Transfer Protocol — HTTP/1.0» (англ.)(англ.) (укр. «Протокол передачі гіпертексту HTTP/1.0»); IETF, травень 1996; Berners-Lee Tim (MIT/LCS), Fielding Roy (UC Irvine), Frystyk Henrik (MIT/LCS) — перша специфікація по протоколу HTTP. Так само включає в себе опис HTTP/0.9.
Матеріали з натуральним мов:
- RFC 3282 Draft standard «Content-Language Headers» (англ.)(англ.) (укр. «Заголовки мови вмісту»); IETF, червень 2002; Alvestrand H. (Cisco Systems).
- RFC 5646 Best current practice «Tags for Identifying Languages» (англ.)(англ.) (укр. «Мітки для позначення мов»); IETF, вересень 2009; Phillips A. (Lab126), Davis M. (Google).
- Language Subtag Registry(англ.). IANA (13 января 2010 г.). — реестр зарегистрированных языковых меток. Перевірено 15 січня 2010. Архівовано з першоджерела 17 березня 2012.