Пользовательские 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} - глобальный идентификатор запроса для его мониторинга в микросервисной системе

comments powered by Disqus