Загрузка...
Загрузка...
Справочник HTTP-заголовков: запрос и ответ, кэширование, безопасность, CORS. Таблицы, примеры, рекомендации по настройке.
Практическое руководство по настройке Content Security Policy для защиты от XSS. Директивы, примеры конфигурации, режим Report-Only и внедрение без поломки сайта.
РазработкаПрактическое руководство по реализации аутентификации с JWT: выдача токенов, проверка на сервере, хранение на клиенте и обновление сессии.
РазработкаПодробное руководство по JWT: структура токена, заголовок, payload, подпись, алгоритмы и рекомендации по безопасному использованию.
БезопасностьГлубокое руководство по настройке HTTP-заголовков безопасности. Content-Security-Policy, HSTS, X-Frame-Options и другие механизмы защиты от атак на веб-приложения.
Поделитесь с коллегами или изучите другие материалы блога
HTTP-заголовки — ключевой элемент протокола. Они передают метаданные запроса и ответа: тип контента, кэширование, аутентификацию, настройки безопасности. Понимание заголовков необходимо для отладки API, настройки производительности и обеспечения безопасности.
Полный анализ заголовков вашего сайта можно получить через HTTP Headers Analyzer и Security Headers на rechecker.ru.
GET /api/users HTTP/1.1
Host: example.com
Accept: application/json
User-Agent: MyApp/1.0
Authorization: Bearer <token>
---
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: max-age=3600
Content-Length: 1234
Заголовки идут после первой строки (request/status line), по одному на строку в формате Name: Value.
| Заголовок | Описание | Пример |
|---|---|---|
| Host | Домен и порт целевого сервера | Host: example.com |
| User-Agent | Идентификатор клиента | User-Agent: Mozilla/5.0... |
| Accept | Предпочитаемые типы контента | Accept: application/json |
| Accept-Language | Предпочитаемые языки | Accept-Language: ru-RU,ru;q=0.9 |
| Accept-Encoding | Поддерживаемое сжатие | Accept-Encoding: gzip, br |
| Authorization | Учётные данные | Authorization: Bearer <token> |
| Content-Type | Тип тела запроса | Content-Type: application/json |
| Content-Length | Размер тела в байтах | Content-Length: 256 |
| Заголовок | Назначение |
|---|---|
| Cookie | Передача cookies |
| Referer | URL страницы-источника |
| Origin | Origin для CORS |
| If-None-Match | Условный запрос (ETag) |
| If-Modified-Since | Условный запрос (дата) |
| Заголовок | Описание | Пример |
|---|---|---|
| Content-Type | MIME-тип и кодировка | Content-Type: text/html; charset=utf-8 |
| Content-Length | Размер тела | Content-Length: 4096 |
| Content-Encoding | Сжатие | Content-Encoding: gzip |
| Content-Disposition | Имя файла при скачивании | Content-Disposition: attachment; filename="file.pdf" |
Подробнее о кэшировании — в статье Cache-Control, ETag, Expires: управление кэшированием через заголовки.
| Заголовок | Описание |
|---|---|
| Cache-Control | Директивы кэширования (max-age, no-cache, no-store) |
| ETag | Хеш контента для валидации |
| Expires | Дата истечения кэша (устаревает в пользу Cache-Control) |
| Last-Modified | Дата последнего изменения |
| Vary | Заголовки, влияющие на выбор варианта ответа |
| Заголовок | Назначение |
|---|---|
| Strict-Transport-Security | HSTS — принудительный HTTPS |
| Content-Security-Policy | CSP — контроль источников контента |
| X-Frame-Options | Защита от clickjacking |
| X-Content-Type-Options | Отключение MIME-sniffing |
| Referrer-Policy | Контроль передачи Referer |
| Permissions-Policy | Ограничение API браузера |
| Заголовок | Описание |
|---|---|
| Access-Control-Allow-Origin | Разрешённые origins |
| Access-Control-Allow-Methods | Разрешённые HTTP-методы |
| Access-Control-Allow-Headers | Разрешённые заголовки запроса |
| Access-Control-Max-Age | Кэширование preflight |
Cache-Control: public, max-age=3600, s-maxage=86400, stale-while-revalidate=600
| Директива | Значение | Описание |
|---|---|---|
| public | — | Можно кэшировать в CDN и браузере |
| private | — | Только в браузере пользователя |
| max-age | секунды | Время жизни кэша |
| s-maxage | секунды | Время жизни в shared cache (CDN) |
| no-cache | — | Нужна валидация перед использованием |
| no-store | — | Не кэшировать вообще |
| stale-while-revalidate | секунды | Отдавать устаревший контент, пока обновляется |
| Тип | MIME | Расширение |
|---|---|---|
| HTML | text/html | .html |
| JSON | application/json | .json |
| XML | application/xml | .xml |
| JavaScript | application/javascript | .js |
| CSS | text/css | .css |
| PNG | image/png | .png |
| JPEG | image/jpeg | .jpg, .jpeg |
| application/pdf | ||
| Form data | application/x-www-form-urlencoded | — |
| Multipart | multipart/form-data | — |
Cache-Control: public, max-age=31536000, immutable
Долгий кэш для файлов с хешем в имени (например, main.a1b2c3.js).
Cache-Control: no-cache
Или короткий max-age с валидацией через ETag.
Cache-Control: private, no-store
Для персональных данных. Для публичных read-only API — max-age с разумным значением.
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Referrer-Policy: strict-origin-when-cross-origin
curl -I https://example.com
Или в браузере: DevTools → Network → выберите запрос → Headers.
Онлайн-инструмент: HTTP Headers — полный разбор заголовков ответа с пояснениями.