Все статьи

HTTP-заголовки: что скрыто в каждом запросе и ответе

Заголовок Content-Language: ru сам по себе не заставляет браузер ничего переключать — это лишь подсказка для поисковых систем и accessibility-инструментов о языке контента. Гораздо чаще на практике важнее заголовок Content-Type: text/html; charset=utf-8: без явного charset старые версии некоторых почтовых клиентов и ботов могут неверно определить кодировку и превратить кириллицу в "кракозябры".

Заголовки запроса против заголовков ответа

Заголовки запроса (например, 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.
  • Проверить, действительно ли сайт отдаётся по HTTPS — это обязательное условие для работы Web Crypto API, на котором основаны хеш- и JWT-инструменты этого сайта.
  • Понять полный набор метаданных, которыми обмениваются браузер и сервер во время запроса.

Почему один заголовок иногда встречается несколько раз

Спецификация HTTP разрешает повторять некоторые заголовки в одном ответе — самый распространённый пример это несколько строк Set-Cookie, каждая для отдельной cookie. Для большинства других заголовков повторные значения официально эквивалентны одному заголовку со значениями, объединёнными запятой, но Set-Cookie намеренное исключение, поскольку запятая — обычный символ внутри значений cookie.

Попробовать инструмент