Ответ
HTTP-заголовки — это пары «ключ-значение», которые передают метаданные о запросе или ответе. Они управляют обработкой данных, кэшированием, аутентификацией, согласованием контента и многим другим.
Категории и примеры важных заголовков:
| Категория | Заголовок (пример) | Назначение |
|---|---|---|
| Определение контента | Content-Type: application/json |
Указывает MIME-тип тела запроса/ответа (JSON, HTML, форма). |
| Кэширование | Cache-Control: max-age=3600 |
Даёт инструкции браузеру и промежуточным прокси о том, как кэшировать ресурс. |
| Аутентификация | Authorization: Bearer eyJhbGci... |
Передаёт учётные данные (токен) для доступа к защищённым ресурсам. |
| CORS (безопасность) | Access-Control-Allow-Origin: https://site.com |
Сообщает браузеру, разрешено ли текущему origin'у делать межсайтовые запросы. |
| Клиентская идентификация | User-Agent: Mozilla/5.0... |
Сообщает серверу о типе клиента (браузер, ОС). Accept-Language: ru-RU указывает предпочитаемый язык. |
| Управление соединением | Connection: keep-alive |
Позволяет переиспользовать TCP-соединение для нескольких запросов. |
| Условные запросы | If-None-Match: "abc123" |
Позволяет кэширующему клиенту запросить данные только если они изменились (сравнивается с ETag). |
Пример полного HTTP-запроса с заголовками:
GET /api/products/123 HTTP/1.1
Host: api.shop.com
User-Agent: MyApp/1.0
Accept: application/json
Authorization: Bearer xyz789
Cache-Control: no-cache
Пример ответа сервера:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Cache-Control: public, max-age=300
ETag: "v2.5"
Content-Length: 85
{"id": 123, "name": "Ноутбук", "price": 99999}
Заголовки — это фундаментальный механизм управления поведением веб-коммуникации.