Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Поля заголовка HTTP являются компонентами раздела заголовка сообщений запроса и ответа в протоколе передачи гипертекста (HTTP). Они определяют рабочие параметры HTTP-транзакции.

Общий формат [ править ]

Поля заголовка передаются после строки запроса (в случае сообщения HTTP с запросом) или строки ответа (в случае сообщения HTTP ответа), которая является первой строкой сообщения. Поля заголовка представляют собой пары ключ-значение, разделенные двоеточиями, в формате строки с открытым текстом , заканчивающиеся последовательностью символов возврата каретки (CR) и перевода строки (LF). Конец раздела заголовка обозначается пустой строкой поля, что приводит к передаче двух последовательных пар CR-LF. Раньше длинные строки можно было складывать в несколько строк; строки продолжения обозначаются наличием пробела (SP) или горизонтальной табуляции (HT) в качестве первого символа в следующей строке. Это сворачивание теперь не рекомендуется. [1]

Имена полей [ править ]

Основной набор полей стандартизирован Инженерной группой Интернета (IETF) в RFC 7230, 7231, 7232, 7233, 7234 и 7235. Постоянный реестр полей заголовков и репозиторий предварительных регистраций поддерживаются IANA . Имена дополнительных полей и допустимые значения могут определяться каждым приложением.

Имена полей заголовка нечувствительны к регистру. [2] Это контрастирует с именами методов HTTP (GET, POST и т. Д.), Которые чувствительны к регистру. [3] [4]

HTTP / 2 накладывает некоторые ограничения на определенные поля заголовка (см. Ниже).

Нестандартные поля заголовка обычно помечались префиксом к имени поля, X-но это соглашение было объявлено устаревшим в июне 2012 года из-за неудобств, которые оно вызвало, когда нестандартные поля стали стандартными. [5] Ранее ограничение на использование Downgraded-было снято в марте 2013 года. [6]

Значения полей [ править ]

Некоторые поля могут содержать комментарии (например, в полях «Пользователь-агент», «Сервер», «Через»), которые могут игнорироваться программным обеспечением. [7]

Многие значения полей могут содержать пару «ключ-значение» качества ( q ), разделенную знаком равенства , определяющую вес для использования при согласовании содержимого . [8] Например, браузер может указать, что он принимает информацию на немецком или английском языке, с немецким языком в качестве предпочтительного, установив значение qde выше, чем у en, как показано ниже:

Accept-Language: de; q=1.0, en; q=0.5

Ограничения по размеру [ править ]

Стандарт не налагает ограничений на размер каждого имени или значения поля заголовка или на количество полей. Однако большинство серверов, клиентов и программного обеспечения прокси налагают некоторые ограничения по практическим соображениям и соображениям безопасности. Например, сервер Apache 2.3 по умолчанию ограничивает размер каждого поля до 8190 байт, а в одном запросе может быть не более 100 полей заголовка. [9]

Поля запроса [ править ]

Стандартные поля запроса [ править ]

Общие нестандартные поля запроса [ править ]

Поля ответа [ править ]

Стандартные поля ответа [ править ]

Общие нестандартные поля ответа [ править ]

Эффекты выбранных полей [ править ]

Как избежать кеширования [ править ]

Если веб-сервер отвечает, Cache-Control: no-cacheтогда веб-браузер или другая система кэширования (промежуточные прокси) не должны использовать ответ для удовлетворения последующих запросов без предварительной проверки с исходным сервером (этот процесс называется проверкой). Это поле заголовка является частью HTTP версии 1.1 и игнорируется некоторыми кешами и браузерами. Это можно смоделировать, установивExpiresЗначение поля заголовка HTTP версии 1.0 на время раньше, чем время ответа. Обратите внимание, что no-cache не указывает браузеру или прокси-серверам, следует ли кэшировать контент. Он просто сообщает браузеру и прокси-серверам проверять содержимое кеша на сервере перед его использованием (это делается с помощью атрибутов If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, упомянутых выше). Таким образом, отправка значения без кеширования указывает браузеру или прокси-серверу не использовать содержимое кеша только на основании «критериев свежести» содержимого кеша. Еще один распространенный способ предотвратить показ старого контента пользователю без проверки - это Cache-Control: max-age=0. Это указывает пользовательскому агенту, что содержимое устарело и перед использованием его следует проверить.

Поле заголовка Cache-Control: no-storeпредназначено для указания приложению браузера сделать все возможное, чтобы не записывать его на диск (то есть не кэшировать).

Запрос о том, что ресурс не должен кэшироваться, не гарантирует, что он не будет записан на диск. В частности, определение HTTP / 1.1 проводит различие между хранилищами истории и кешами. Если пользователь возвращается к предыдущей странице, браузер все равно может показывать вам страницу, которая была сохранена на диске в хранилище истории. Это правильное поведение согласно спецификации. Многие пользовательские агенты демонстрируют различное поведение при загрузке страниц из хранилища истории или кеша в зависимости от того, какой протокол используется - HTTP или HTTPS.

Поле Cache-Control: no-cacheзаголовка HTTP / 1.1 также предназначено для использования в запросах, сделанных клиентом. Это средство, с помощью которого браузер сообщает серверу и любым промежуточным кэшам, что ему нужна свежая версия ресурса. Поле Pragma: no-cacheзаголовка, определенное в спецификации HTTP / 1.0, имеет ту же цель. Однако он определен только для заголовка запроса. Его значение в заголовке ответа не указывается. [69] Поведение Pragma: no-cacheв ответе зависит от реализации. Хотя некоторые пользовательские агенты обращают внимание на это поле в ответах [70], RFC HTTP / 1.1 специально предостерегает от использования такого поведения.

См. Также [ править ]

  • Внедрение HTTP-заголовка
  • HTTP ETag
  • Список кодов состояния HTTP

Ссылки [ править ]

  1. ^ «Протокол передачи гипертекста (HTTP / 1.1): синтаксис сообщений и маршрутизация» . ietf.org . Проверено 23 июля 2014 года .
  2. ^ RFC-7230, раздел 3.2
  3. ^ RFC-7210, раздел 3.1.1
  4. ^ RFC-7231 раздел 4.1
  5. ^ Internet Engineering Task Force (1 июня 2012 г.). «RFC 6648» . Проверено 12 ноября 2012 года .
  6. ^ «Заголовки сообщений» . Iana.org. 11 июня 2014 . Проверено 12 июня 2014 года .
  7. ^ «Протокол передачи гипертекста (HTTP / 1.1): синтаксис сообщений и маршрутизация» . itef.org . Проверено 24 июля 2014 года .
  8. ^ «Протокол передачи гипертекста (HTTP / 1.1): семантика и содержание» . ietf.org . Проверено 24 июля 2014 года .
  9. ^ "ядро - HTTP-сервер Apache" . Httpd.apache.org. Архивировано из оригинала 9 мая 2012 года . Проверено 13 марта 2012 года .
  10. ^ а б в RFC 3229 . DOI : 10,17487 / RFC3229 .
  11. ^ a b c «Совместное использование ресурсов между разными источниками» . Проверено 24 июля 2017 года .
  12. ^ a b «Протокол передачи гипертекста (HTTP / 1.1): синтаксис сообщений и маршрутизация» . IETF . Июнь 2014 . Проверено 19 декабря 2014 года .
  13. ^ a b c d e f g h i "Протокол передачи гипертекста версии 2 (HTTP / 2)" . IETF . Май 2015 . Проверено 6 июня 2017 года .
  14. ^ a b «Протокол передачи гипертекста (HTTP / 1.1): семантика и содержание» . Проверено 3 июня 2015 года .
  15. ^ «Перенаправленное расширение HTTP: Введение» . IETF . Июнь 2014 . Проверено 7 января, 2016 .
  16. ^ «Протокол передачи гипертекста (HTTP / 1.1): синтаксис сообщений и маршрутизация» . IETF . Июнь 2014 . Проверено 24 июля 2014 года .
  17. ^ «Протокол передачи гипертекста версии 2 (HTTP / 2)» . IETF . Май 2015 . Проверено 6 июня 2017 года .
  18. ^ «Заголовки сообщений» . www.iana.org . Проверено 26 ноября 2018 года .
  19. ^ «Протокол передачи гипертекста версии 2 (HTTP / 2)» . httpwg.org . 30 мая 2015 года . Проверено 22 февраля 2019 года .
  20. ^ «Обновление небезопасных запросов - Рекомендация кандидата W3C» . W3C . 8 октября 2015 года . Проверено 14 января 2016 года .
  21. ^ https://www.stoutner.com/the-x-requested-with-header/
  22. ^ "Попробуйте HTTP-заголовок" Не отслеживать "" . Проверено 31 января 2011 года .
  23. ^ «Защита от веб-отслеживания: минимальные стандарты и возможности для инноваций» . Проверено 24 марта 2011 года .
  24. ^ IETF Do Not Track: отказ от универсального стороннего веб-отслеживания 7 марта 2011 г.
  25. ^ W3C Tracking Preference Expression (DNT) , 26 января 2012 г.
  26. Амос Джеффрис (2 июля 2010 г.). "SquidFaq / ConfiguringSquid - Squid Web Proxy Wiki" . Проверено 10 сентября 2009 года .
  27. ^ Фонд программного обеспечения Apache. «mod_proxy - HTTP-сервер Apache версии 2.2» . Проверено 12 ноября 2014 года .
  28. Дэйв Стейнберг (10 апреля 2007 г.). «Как мне настроить мой сайт SSL для работы с балансировщиком нагрузки GeekISP?» . Проверено 30 сентября 2010 года .
  29. ^ «Помощь в обеспечении безопасности связи: от клиента к серверу переднего плана» . 27 июля 2006 . Проверено 23 апреля 2012 года .
  30. ^ "Спецификация сервера API OpenSocial Core 2.5.1" . Проверено 8 октября 2014 года .
  31. ^ "Идентификатор устройства ATT" . Проверено 14 января 2012 года .
  32. ^ "Профиль WAP" . Проверено 14 января 2012 года .
  33. ^ де Бойн Поллард, Джонатан (2007). «Заголовок Proxy-Connection: является ошибкой из-за того, как некоторые веб-браузеры используют HTTP» . Проверено 16 января 2018 года .
  34. ^ «Verizon внедряет постоянные файлы cookie для отслеживания мобильных клиентов, минуя средства контроля конфиденциальности» . Electronic Frontier Foundation . Проверено 19 января 2014 года .
  35. ^ «Проверка известных радиомаяков AT&T, Verizon, Sprint, Bell Canada и Vodacom с уникальным идентификатором» . Проверено 19 января 2014 года .
  36. ^ Крейг Тимберг. «Verizon, AT&T отслеживает своих пользователей с помощью« супер - файлов cookie » » . Вашингтон Пост . Проверено 19 января 2014 года .
  37. ^ «Защита от подделки межсайтовых запросов SAP» . SAP SE . Проверено 20 января 2015 года .
  38. ^ "Защита от подделки межсайтовых запросов Django" . Django (веб-фреймворк) . Архивировано из оригинала на 20 января 2015 года . Проверено 20 января 2015 года .
  39. ^ "Защита от подделки межсайтовых запросов Angular (XSRF)" . AngularJS . Проверено 20 января 2015 года .
  40. ^ a b "Что такое http-заголовок X-REQUEST-ID?" . stackoverflow.com . Проверено 19 мая 2016 года .
  41. ^ «Идентификаторы HTTP-запросов» . devcenter.heroku.com . Проверено 6 февраля 2018 года .
  42. ^ «Значение идентификаторов корреляции» . Блог Rapid7 . 23 декабря 2016 . Проверено 13 апреля 2018 года .
  43. ^ Хилтон, Питер. «Идентификаторы корреляции для микросервисных архитектур - Питер Хилтон» . hilton.org.uk . Проверено 13 апреля 2018 года .
  44. ^ «Save Data API Living Document Draft Community Group Report 2.1.1. Поле заголовка запроса сохранения данных» . Группа сообщества инкубатора веб-платформ . 30 июня 2020 . Проверено 5 марта 2021 года .
  45. ^ "RFC 5789" . Проверено 24 декабря 2014 года .
  46. ^ «Альтернативные службы HTTP» . IETF. Апреля 2016 . Проверено 19 апреля 2016 года .
  47. ^ «Альтернативные службы HTTP, раздел 3» . IETF. Апреля 2016 . Проверено 8 июня 2017 года .
  48. ^ "RFC 6266" . Проверено 13 марта 2015 года .
  49. ^ «RFC 7231 - Протокол передачи гипертекста (HTTP / 1.1): семантика и контент» . Tools.ietf.org . Проверено 11 декабря 2017 года .
  50. ^ «Заголовки даты HTTP, соответствующие RFC7231» .
  51. ^ Укажите каноническую версию URL, ответив HTTP-заголовком Link rel = "canonical". Получено: 09.02.2012.
  52. ^ Работа W3C P3P приостановлена
  53. ^ «Расширение закрепления открытого ключа для HTTP» . IETF . Проверено 17 апреля 2015 года .
  54. ^ «Протокол передачи гипертекста (HTTP / 1.1): семантика и содержание» . Проверено 24 июля 2014 года .
  55. ^ "Параметры X-кадра поля заголовка HTTP" . IETF. 2013 . Проверено 12 июня 2014 года .
  56. ^ «Уровень политики безопасности контента 2» . Проверено 2 августа 2014 года .
  57. ^ «Политика безопасности контента» . W3C. 2012 . Проверено 28 апреля 2017 года .
  58. ^ "Определите заголовок HTTP Refresh с помощью annevk · Pull Request # 2892 · whatwg / html" . GitHub . 9 августа 2017 года . Проверено 17 апреля 2021 года .
  59. ^ «Протокол передачи гипертекста (HTTP / 1.1): синтаксис сообщений и маршрутизация» . Проверено 24 июля 2014 года .
  60. ^ "Время-Разрешить-Происхождение" . Сеть разработчиков Mozilla . Проверено 25 января 2018 года .
  61. ^ «Настройка серверов для Ogg media» . 26 мая 2014 года . Проверено 3 января 2015 года .
  62. Эрик Лоуренс (3 сентября 2008 г.). «Безопасность IE8, часть VI: обновление бета-версии 2» . Проверено 28 сентября 2010 года .
  63. ^ «Хостинг - Расширения Google Chrome - Код Google» . Проверено 14 июня 2012 года .
  64. ^ Ван Кестерен, Энн (26 августа 2016). "Привести стандарт" . WHATWG . Архивировано 26 августа 2016 года . Проверено 26 августа, 2016 .
  65. ^ «Почему платформа ASP.NET добавляет в ответы заголовок HTTP« X-Powered-By: ASP.NET »? - Переполнение стека» . Проверено 30 сентября 2010 года .
  66. ^ «Определение совместимости документов: определение режимов совместимости документов» . 1 апреля 2011 . Проверено 24 января 2012 года .
  67. ^ «HTML Living Standard 4.2.5.3 Директивы Pragma, X-UA-совместимое состояние» . WHATWG . 12 марта 2021 . Проверено 14 марта 2021 года . Для метаэлементов с атрибутом http-Equiv в состоянии X-UA-Compatible атрибут содержимого должен иметь значение, которое соответствует строке без учета регистра ASCII ."IE=edge"
  68. Эрик Лоуренс (2 июля 2008 г.). «Безопасность IE8, часть IV: фильтр XSS» . Проверено 30 сентября 2010 года .
  69. ^ «Протокол передачи гипертекста (HTTP / 1.1): кэширование» . ietf.org . Проверено 24 июля 2014 года .
  70. ^ «Как предотвратить кеширование в Internet Explorer» . Microsoft . 22 сентября 2011 . Проверено 15 апреля 2015 года .

Внешние ссылки [ править ]

  • Заголовки: имена полей заголовка постоянного сообщения
  • RFC 6265: Механизм управления состоянием HTTP IETF
  • RFC 7230: протокол передачи гипертекста (HTTP / 1.1): синтаксис сообщений и маршрутизация
  • RFC 7231: протокол передачи гипертекста (HTTP / 1.1): семантика и контент
  • RFC 7232: протокол передачи гипертекста (HTTP / 1.1): условные запросы
  • RFC 7233: протокол передачи гипертекста (HTTP / 1.1): запросы диапазона
  • RFC 7234: протокол передачи гипертекста (HTTP / 1.1): кэширование
  • RFC 7235: протокол передачи гипертекста (HTTP / 1.1): аутентификация
  • RFC 7239: перенаправленное расширение HTTP
  • RFC 7240: предпочитать заголовок для HTTP
  • Заголовки HTTP / 1.1 с точки зрения веб-сервера
  • Internet Explorer и настраиваемые заголовки HTTP - IEInternals от EricLaw - Домашняя страница сайта - Блоги MSDN