HTTP-заголовки — це метадані, які супроводжують кожен запит і кожну відповідь, описуючи, як саме варто інтерпретувати чи обробити тіло повідомлення. Вони невидимі в браузері, але керують значною частиною поведінки вебсторінки.
Заголовки запиту проти заголовків відповіді
Заголовки запиту (наприклад, Accept, User-Agent, Cookie) браузер надсилає серверу, описуючи себе й свої очікування. Заголовки відповіді (Content-Type, Set-Cookie, Cache-Control) сервер надсилає у відповідь, описуючи повернені дані та інструкції для браузера.
Навіщо потрібен Content-Type
Заголовок Content-Type повідомляє браузеру, як інтерпретувати тіло відповіді: як HTML-сторінку, JSON-дані, зображення чи файл для завантаження. Без правильного значення цього заголовка браузер може спробувати відобразити JSON як звичайний текст або, навпаки, некоректно обробити HTML.
Як Cache-Control керує кешуванням
Значення на кшталт max-age=3600 або no-cache вказують браузеру й проміжним проксі-серверам, скільки часу можна використовувати закешовану версію ресурсу без повторного запиту до сервера. Неправильне налаштування цього заголовка — поширена причина, чому користувачі бачать застарілу версію сайту.
Навіщо це потрібно
- Діагностувати, чому браузер неправильно відображає відповідь API.
- Перевірити налаштування кешування перед релізом оновленої версії сайту.
- Зрозуміти повний набір метаданих, якими обмінюються браузер і сервер під час запиту.
Чому один заголовок іноді трапляється кілька разів
Специфікація HTTP дозволяє повторювати деякі заголовки в одній відповіді — найпоширеніший приклад це кілька рядків Set-Cookie, кожен для окремої cookie. Для більшості інших заголовків повторні значення офіційно еквівалентні одному заголовку зі значеннями, об'єднаними комою, але Set-Cookie навмисний виняток, бо кома є звичайним символом усередині значень cookie.