Пользовательские HTTP заголовки (X-Headers)
Данный материал является конспектом видео с сайта deworker.pro.
Исторически - префикс X использовался для экспериментальных заголовков, не входящих в стандарт. На текущий момент - префикс X принято использовать только для собственных заголовков, не претендующих на принятие в качестве стандарта в будущем.
Существует ряд уже устоявшихся X заголовков, поддерживаемых и не поддерживаемых браузером.
С поддержкой браузеров
X-DNS-Prefetch-Control: off - не подгружать заранее ссылки на странице
X-Content-Type-Options: nosniff always - запрещать IE переопределять Content-Type загружаемых ресурсов на основании своей логики (доверять типу, который вернулся в ответе сервера)
X-XSS-Protection: 1; mode=block - защита от кросс-сайтовых запросов; может быть заменён с помощью Content-Security-Options
X-Frame-Options: {value} - политика встраивания сайта через iframe; может быть заменён с помощью Content-Security-Options
- deny - запрещать встраивание сайта через iframe
- sameorigin - разрешать отображать iframe только на нашем сайте
Без поддержки браузеров
Заголовки, которые браузер не понимает, но они могут быть использованы для собственных нужд.
Для прокси сервера
Позволяют передать через 1 и более прокси серверов информацию о конечном клиенте
X-Real-IP: 123.123.2.1 - IP конечного пользователя
X-Forwarded-For: 123.123.2.1, 123.123.2.3 - IP конечного пользователя + IP промежуточных прокси-серверов
X-Forwarded-Host: example.com
X-Forwarded-Proto: https
X-NginX-Proxy: 1 - указание, что запрос пришёл от прокси сервера nginx
Заголовок, который может быть использован вместо упомянутых выше:
Forwarded: by=192.168.0.10;for=167.12.11.0,192.168.0.15;host=example.com;proto=https
- 192.168.0.10 - IP последнего прокси в цепочке
- 192.168.0.15 - IP предпоследнего прокси в цепочке
- 167.12.11.0 - IP конечного клиента
- https, example.com - схема + хост конечного клиента
Пагинация
Информация о разбиении контента по страницам
Вариант 1
X-Page-Count: 2
X-Total-Count: 100
Вариант 2 (используется в том числе в Yii framework)
X-Pagination-Page-Count: 2
X-Pagination-Total-Count: 100
X-Pagination-Current-Page: 50
X-Pagination-Per-Page: 2
Разное
X-Requested-With: XMLHttpRequest - обозначение того, что это AJAX запрос (jQuery такое отсылает сам)
X-Http-Method-Override: DELETE - в случае если прокси не поддерживает, к примеру, метод DELETE, можно послать запрос методом POST, но при этом указать “настоящий” метод, на который должен ориентироваться сервер
X-Csrf-Token: {token} - передача токена для CSRF валидации
X-Pingback: https://example.com/xmlrpc.php - заголовок, используемый wordpress, для уведомлений о том, что на пост кто-то сослался
X-Request-ID: {id} - глобальный идентификатор запроса для его мониторинга в микросервисной системе