Усі статті

HTTP-заголовки: що приховано в кожному запиті й відповіді

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.

Спробувати інструмент