Протокол передачи гипертекста


Страница защищена ожидающими изменениями
Из Википедии, свободной энциклопедии
  (Перенаправлено с протокола HTTP )
Перейти к навигации Перейти к поиску

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

Разработка HTTP была инициирована Тимом Бернерсом-Ли в CERN в 1989 году. Разработка первых HTTP- запросов для комментариев (RFC) была скоординированной работой Инженерной группы Интернета (IETF) и Консорциума World Wide Web (W3C). позже перешел в IETF.

HTTP / 1 был впервые задокументирован (как версия 1.1) в 1997 году. [2]

HTTP / 2 является более эффективным выражением семантики HTTP «в сети», был опубликован в 2015 году и используется 45% веб-сайтов; теперь он поддерживается практически всеми веб-браузерами [3] и основными веб-серверами через Transport Layer Security (TLS) с использованием расширения Application-Layer Protocol Negotiation (ALPN) [4], где требуется TLS 1.2 или новее. [5] [6]

HTTP / 3 является предлагаемым преемником HTTP / 2, [7] [8], и две трети пользователей веб-браузеров (как на настольных компьютерах, так и на мобильных устройствах) уже могут использовать HTTP / 3 на 20% веб-сайтов, которые его уже поддерживают. ; он использует QUIC вместо TCP для основного транспортного протокола. Как и HTTP / 2, он не отменяет предыдущие основные версии протокола. Поддержка HTTP / 3 была впервые добавлена ​​в Cloudflare и Google Chrome , [9] [10], а также включена в Firefox. [11]

Технический обзор

URL-адрес, начинающийся со схемы HTTP и метки имени домена WWW

HTTP функционирует как протокол запроса-ответа в вычислительной модели клиент-сервер. Веб - браузер , например, может быть клиент и приложение , запущенное на компьютере хостинг на веб - сайт может быть сервер . Клиент отправляет на сервер сообщение HTTP- запроса . Сервер, который предоставляет ресурсы, такие как файлы HTML и другое содержимое, или выполняет другие функции от имени клиента, возвращает клиенту ответное сообщение. Ответ содержит информацию о состоянии завершения запроса, а также может содержать запрошенное содержимое в теле сообщения.

Веб-браузер - это пример пользовательского агента (UA). Другие типы пользовательских агентов включают программное обеспечение для индексирования, используемое поставщиками поиска ( веб-сканеры ), голосовыми браузерами , мобильными приложениями и другим программным обеспечением, которое получает доступ, потребляет или отображает веб-контент.

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

HTTP - это протокол прикладного уровня , разработанный в рамках набора Интернет-протоколов . Его определение предполагает лежащий в основе и надежный протокол транспортного уровня [12] и обычно используется протокол управления передачей (TCP). Однако HTTP может быть адаптирован для использования ненадежных протоколов, таких как протокол дейтаграмм пользователя (UDP), например, в HTTPU и протоколе обнаружения простых служб (SSDP).

Ресурсы HTTP идентифицируются и размещаются в сети с помощью универсальных указателей ресурсов (URL) с использованием схем универсальных идентификаторов ресурсов (URI) http и https . Как определено в RFC 3986 , URI кодируются как гиперссылки в HTML- документах, чтобы формировать взаимосвязанные гипертекстовые документы. 

HTTP / 1.1 - это версия исходного HTTP (HTTP / 1.0). В HTTP / 1.0 для каждого запроса ресурса выполняется отдельное соединение с одним и тем же сервером. HTTP / 1.1 может повторно использовать соединение несколько раз для загрузки изображений, скриптов , таблиц стилей и т. Д. После доставки страницы. Таким образом, связь HTTP / 1.1 имеет меньшую задержку, поскольку установление TCP-соединений сопряжено со значительными накладными расходами. [13]

История

Тим Бернерс-Ли

Термин гипертекст был введен Тедом Нельсоном в 1965 году в проекте Xanadu Project , который, в свою очередь, был вдохновлен видением Ванневаром Бушем 1930-х годов системы поиска и управления информацией на основе микрофильмов « memex », описанной в его эссе 1945 года « Как мы можем думать» ". Тиму Бернерсу-Ли и его команде в ЦЕРН приписывают изобретение оригинального протокола HTTP, а также HTML и связанной с ним технологии для веб-сервера и текстового веб-браузера. Бернерс-Ли впервые предложил проект «WorldWideWeb» в 1989 году, ныне известный как World Wide Web.. В первой версии протокола был только один метод, а именно GET, который запрашивал страницу с сервера. [14] Ответ сервера всегда представлял собой HTML-страницу. [15]

Первой документированной версией HTTP была HTTP V0.9 (1991). Дэйв Рэггетт возглавил рабочую группу HTTP (HTTP WG) в 1995 году и хотел расширить протокол за счет расширенных операций, расширенного согласования, более богатой метаинформации, связанной с протоколом безопасности, который стал более эффективным за счет добавления дополнительных методов и полей заголовков . [16] [17] RFC 1945 официально представил и признал HTTP V1.0 в 1996 году. 

Рабочая группа HTTP планировала опубликовать новые стандарты в декабре 1995 года [18], и поддержка предварительного стандарта HTTP / 1.1 на основе разрабатываемого тогда RFC 2068 (называемого HTTP-NG) была быстро принята основными разработчиками браузеров в начале 1996 года. Конец -пользователи быстро приняли новые браузеры. В марте 1996 года одна веб-хостинговая компания сообщила, что более 40% браузеров, используемых в Интернете, были совместимы с HTTP 1.1. Та же самая веб-хостинговая компания сообщила, что к июню 1996 года 65% всех браузеров, обращающихся к их серверам, были совместимы с HTTP / 1.1. [19] Стандарт HTTP / 1.1, как определено в RFC 2068, был официально выпущен в январе 1997 года. Улучшения и обновления стандарта HTTP / 1.1 были выпущены в соответствии с RFC.   2616 в июне 1999 г.

В 2007 году была сформирована рабочая группа HTTP , чтобы частично пересмотреть и уточнить спецификацию HTTP / 1.1. В июне 2014 года рабочая группа выпустила обновленную спецификацию из шести частей, отменяющую RFC 2616 : 

  • 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: аутентификация

HTTP / 2 был опубликован как RFC 7540 в мае 2015 года. 

HTTP-сессия

HTTP-сеанс - это последовательность сетевых транзакций запрос – ответ. Клиент HTTP инициирует запрос, устанавливая соединение по протоколу управления передачей (TCP) с определенным портом на сервере (обычно порт 80, иногда порт 8080; см. Список номеров портов TCP и UDP ). HTTP-сервер, прослушивающий этот порт, ожидает сообщения запроса от клиента. После получения запроса сервер отправляет обратно строку состояния, например « HTTP / 1.1 200 OK », и собственное сообщение. Тело этого сообщения обычно является запрошенным ресурсом, хотя также может быть возвращено сообщение об ошибке или другая информация. [1]

Постоянные соединения

В HTTP / 0.9 и 1.0 соединение закрывается после одной пары запрос / ответ. В HTTP / 1.1 был введен механизм keep-alive, при котором соединение можно было повторно использовать для более чем одного запроса. Такие постоянные соединения заметно сокращают задержку запроса, поскольку клиенту не нужно повторно согласовывать соединение TCP 3-Way-Handshake после отправки первого запроса. Еще один положительный побочный эффект заключается в том, что в целом со временем соединение становится быстрее из-за механизма медленного старта TCP.

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

Состояние сеанса HTTP

HTTP - это протокол без сохранения состояния . Протокол без сохранения состояния не требует, чтобы HTTP-сервер сохранял информацию или статус каждого пользователя в течение нескольких запросов. Однако некоторые веб-приложения реализуют состояния или сеансы на стороне сервера, используя, например, файлы cookie HTTP или скрытые переменные в веб-формах .

HTTP-аутентификация

HTTP предоставляет несколько схем аутентификации, таких как базовая аутентификация доступа и дайджест-аутентификация доступа, которые работают через механизм запрос-ответ, посредством которого сервер идентифицирует и выдает запрос перед обслуживанием запрошенного контента.

HTTP обеспечивает общую структуру для управления доступом и аутентификации через расширяемый набор схем аутентификации запрос – ответ, которые могут использоваться сервером для оспаривания запроса клиента и клиентом для предоставления информации аутентификации. [20]

Области аутентификации

Спецификация HTTP-аутентификации также предоставляет произвольную, зависящую от реализации конструкцию для дальнейшего разделения ресурсов, общих для данного корневого URI . Строка значения области, если она присутствует, комбинируется с каноническим корневым URI, чтобы сформировать компонент пространства защиты запроса. Фактически это позволяет серверу определять отдельные области аутентификации под одним корневым URI. [20]

Запросить сообщения

Синтаксис запроса

Клиент отправляет на сервер сообщения запроса , которые состоят из: [21]

  • строка запроса, состоящая из метода запроса с учетом регистра, пробела , цели запроса, другого пробела, версии протокола, возврата каретки и перевода строки (например, GET /images/logo.png HTTP / 1.1 );
  • ноль или более полей заголовка запроса , каждое из которых состоит из имени поля без учета регистра, двоеточия, необязательного начального пробела , значения поля и необязательного конечного пробела (например, Accept-Language: en ) и заканчивается символом возврата каретки и строки подача;
  • пустая строка, состоящая из возврата каретки и перевода строки;
  • необязательное тело сообщения .

В протоколе HTTP / 1.1 все поля заголовка, кроме Host, являются необязательными.

Строка запроса, содержащая только имя пути, принимается серверами для обеспечения совместимости с HTTP-клиентами до спецификации HTTP / 1.0 в RFC 1945 . [22] 

Способы запроса

Запрос HTTP / 1.1, сделанный с помощью telnet. Запрос сообщение, ответ раздел заголовка и тело ответа выдвинуты на первый план.

HTTP определяет методы (иногда называемые глаголами , но нигде в спецификации не упоминается глагол , а OPTIONS или HEAD не является глаголом), чтобы указать желаемое действие, которое должно быть выполнено над идентифицированным ресурсом. Что представляет этот ресурс, будь то уже существующие данные или данные, которые генерируются динамически, зависит от реализации сервера. Часто ресурс соответствует файлу или выходным данным исполняемого файла, находящегося на сервере. Спецификация HTTP / 1.0 [23] определяет методы GET, HEAD и POST, а также спецификацию HTTP / 1.1 [24]добавлено пять новых методов: PUT, DELETE, CONNECT, OPTIONS и TRACE. Поскольку они указаны в этих документах, их семантика хорошо известна, и на нее можно положиться. Любой клиент может использовать любой метод, а сервер можно настроить для поддержки любой комбинации методов. Если метод неизвестен промежуточному звену, он будет рассматриваться как небезопасный и неидемпотентный метод. Нет ограничений на количество методов, которые могут быть определены, и это позволяет указывать будущие методы без нарушения существующей инфраструктуры. Например, WebDAV определил семь новых методов, а RFC 5789 определил метод PATCH . 

Имена методов чувствительны к регистру. [25] [26] Это контрастирует с именами полей заголовка HTTP, которые нечувствительны к регистру. [27]

ПОЛУЧАТЬ
Метод GET запрашивает у целевого ресурса представление своего состояния. Запросы GET должны только извлекать данные и не должны иметь никакого другого эффекта. (Это также относится и к некоторым другим методам HTTP.) [1] W3C опубликовал принципы наведения на это различие, говоря, « Веб - приложение дизайн должен быть проинформирован вышеизложенными принципами, но и соответствующими ограничениями.» [28] См. Безопасные методы ниже.
ГОЛОВА
Метод HEAD запрашивает, чтобы целевой ресурс передавал представление своего состояния, как для запроса GET, но без данных представления, заключенных в теле ответа. Это полезно для получения метаданных представления в заголовке ответа без необходимости передачи всего представления.
СООБЩЕНИЕ
Метод POST требует, чтобы целевой ресурс обработал представление, заключенное в запросе, в соответствии с семантикой целевого ресурса. Например, он используется для отправки сообщения на Интернет-форум , подписки на список рассылки или завершения транзакции онлайн-покупок . [29]
ПОЛОЖИЛ
Метод PUT запрашивает, чтобы целевой ресурс создал или обновил свое состояние с помощью состояния, определенного представлением, заключенным в запрос. [30]
УДАЛИТЬ
Метод DELETE запрашивает у целевого ресурса удаление своего состояния.
СОЕДИНЯТЬ
Метод CONNECT запрашивает, чтобы посредник установил туннель TCP / IP к исходному серверу, указанному целью запроса. Он часто используется для защиты соединений через один или несколько HTTP-прокси с помощью TLS . [31] [32] [33] См. Метод HTTP CONNECT .
ОПЦИИ
Метод OPTIONS запрашивает, чтобы целевой ресурс передавал поддерживаемые им методы HTTP. Это можно использовать для проверки функциональности веб-сервера, запросив «*» вместо определенного ресурса.
СЛЕД
Метод TRACE запрашивает, чтобы целевой ресурс передавал полученный запрос в теле ответа. Таким образом, клиент может видеть, какие (если есть) изменения или дополнения были внесены посредниками.
ПЛАСТЫРЬ
Метод PATCH запрашивает, чтобы целевой ресурс изменил свое состояние в соответствии с частичным обновлением, определенным в представлении, включенном в запрос. [34]

Все HTTP-серверы общего назначения должны реализовывать по крайней мере методы GET и HEAD, а все другие методы считаются необязательными в спецификации. [35]

Безопасные методы

Метод запроса безопасен, если запрос с этим методом не оказывает ожидаемого воздействия на сервер. Методы GET, HEAD, OPTIONS и TRACE определены как безопасные. Другими словами, безопасные методы предназначены только для чтения . Однако они не исключают побочных эффектов , таких как добавление информации о запросе в файл журнала или начисление платы за рекламную учетную запись , поскольку они по определению не запрашиваются клиентом.

Напротив, методы POST, PUT, DELETE, CONNECT и PATCH небезопасны. Они могут изменять состояние сервера или иметь другие эффекты, такие как отправка электронной почты . Поэтому такие методы обычно не используются соответствующими веб-роботами или поисковыми роботами ; некоторые из них, как правило, обращаются с просьбами без учета контекста или последствий.

Несмотря на предписанную безопасность GET- запросов, на практике их обработка сервером никак не ограничивается технически. Следовательно, неосторожное или преднамеренное программирование может вызвать нетривиальные изменения на сервере. Это не рекомендуется, поскольку это может вызвать проблемы для веб-кеширования , поисковых систем и других автоматизированных агентов, которые могут вносить непреднамеренные изменения на сервере. Например, веб-сайт может разрешить удаление ресурса через URL-адрес, такой как https://example.com/article/1234/delete , который при произвольной выборке, даже с использованием GET , просто удалит статью. [36]

Одним из примеров того, как это происходило на практике, была недолгая бета-версия Google Web Accelerator , которая предварительно выбирала произвольные URL-адреса на странице, которую просматривал пользователь, в результате чего записи автоматически изменялись или удалялись в массовом порядке . Бета-версия была приостановлена ​​всего через несколько недель после ее первого выпуска из-за широкой критики. [37] [36]

Идемпотентные методы

Метод запроса является идемпотентным, если несколько идентичных запросов с этим методом имеют тот же предполагаемый эффект, что и один такой запрос. Методы PUT и DELETE, а также безопасные методы определены как идемпотентные.

Напротив, методы POST, CONNECT и PATCH не обязательно являются идемпотентными, и поэтому отправка идентичного запроса POST несколько раз может дополнительно изменить состояние сервера или иметь дополнительные эффекты, такие как отправка электронной почты . В некоторых случаях это может быть желательно, но в других случаях это может быть связано с несчастным случаем, например, когда пользователь не осознает, что его действие приведет к отправке другого запроса, или он не получил адекватной обратной связи о том, что их первый запрос был успешный. Хотя веб-браузеры могут отображать диалоговые окна предупреждений, чтобы предупредить пользователей в некоторых случаях, когда перезагрузка страницы может повторно отправить запрос POST, обычно веб-приложение должно обрабатывать случаи, когда запрос POST не должен отправляться более одного раза.

Обратите внимание, что то, является ли метод идемпотентным, не определяется протоколом или веб-сервером. Вполне возможно написать веб-приложение, в котором (например) вставка в базу данных или другое неидемпотентное действие запускается GET или другим запросом. Однако игнорирование этой рекомендации может привести к нежелательным последствиям, если пользовательский агент предполагает, что повторение одного и того же запроса безопасно, когда это не так.

Кешируемые методы

Метод запроса кэшируется, если ответы на запросы с этим методом могут быть сохранены для повторного использования в будущем. Методы GET, HEAD и POST определены как кэшируемые.

Напротив, методы PUT, DELETE, CONNECT, OPTIONS, TRACE и PATCH не кэшируются.

Поля заголовка запроса

Поля заголовка запроса позволяют клиенту передавать дополнительную информацию за пределы строки запроса, действуя как модификаторы запроса (аналогично параметрам процедуры). Они предоставляют информацию о клиенте, о целевом ресурсе или об ожидаемой обработке запроса.

Ответные сообщения

Синтаксис ответа

Сервер отправляет клиенту ответные сообщения , которые состоят из: [21]

  • строка состояния, состоящая из версии протокола, пробела , кода состояния ответа , другого пробела, возможно пустой фразы причины, возврата каретки и перевода строки (например, HTTP / 1.1 200 OK );
  • ноль или более полей заголовка ответа , каждое из которых состоит из имени поля без учета регистра, двоеточия, необязательного начального пробела , значения поля и необязательного конечного пробела (например, Content-Type: text / html ) и заканчивается символом возврата каретки и перевод строки;
  • пустая строка, состоящая из возврата каретки и перевода строки;
  • необязательное тело сообщения .

Коды статуса ответа

В HTTP / 1.0 и с тех пор первая строка ответа HTTP называется строкой состояния и включает числовой код состояния (например, « 404 ») и текстовую фразу причины (например, «Не найдено»). Код состояния ответа - это трехзначный целочисленный код, представляющий результат попытки сервера понять и удовлетворить соответствующий запрос клиента. То, как клиент обрабатывает ответ, зависит в первую очередь от кода состояния и, во вторую очередь, от других полей заголовка ответа. Клиенты могут не понимать все зарегистрированные коды состояния, но они должны понимать свой класс (заданный первой цифрой кода состояния) и рассматривать нераспознанный код состояния как эквивалентный коду состояния x00 этого класса.

Стандартные фразы причины являются только рекомендациями и могут быть заменены «местными эквивалентами» по усмотрению веб-разработчика . Если код состояния указывает на проблему, пользовательский агент может отобразить фразу причины для пользователя, чтобы предоставить дополнительную информацию о природе проблемы. Стандарт также позволяет пользовательскому агенту пытаться интерпретировать фразу причины , хотя это может быть неразумно, поскольку в стандарте явно указано, что коды состояния машиночитаемы, а фразы причины читаемы человеком.

Первая цифра кода состояния определяет его класс:

1XX (информационный)
Запрос получен, процесс продолжается.
2XX (успешный)
Запрос был успешно получен, понят и принят.
3XX (перенаправление)
Для выполнения запроса необходимо предпринять дальнейшие действия.
4XX (ошибка клиента)
Запрос содержит неверный синтаксис или не может быть выполнен.
5XX (Ошибка сервера)
Серверу не удалось выполнить явно действительный запрос.

Поля заголовка ответа

Поля заголовка ответа позволяют серверу передавать дополнительную информацию за пределы строки состояния, действуя как модификаторы ответа. Они предоставляют информацию о сервере или о дальнейшем доступе к целевому ресурсу или связанным ресурсам.

Каждое поле заголовка ответа имеет определенное значение, которое может быть дополнительно уточнено семантикой метода запроса или кодом состояния ответа.

Зашифрованные соединения

Самый популярный способ установления зашифрованного HTTP-соединения - HTTPS . [38] Также существуют два других метода для установления зашифрованного HTTP-соединения: защищенный протокол передачи гипертекста и использование заголовка HTTP / 1.1 Upgrade для определения обновления до TLS. Однако поддержка этих двух браузеров практически отсутствует. [39] [40] [41]

Пример сеанса

Ниже приведен пример диалога между HTTP-клиентом и HTTP-сервером, работающим на www.example.com , порт 80.

Запрос клиента

GET  /  HTTP / 1.1 Хост :  www.example.com

За клиентским запросом (состоящим в данном случае из строки запроса и только одного поля заголовка) следует пустая строка, так что запрос заканчивается двойной новой строкой, каждая в форме возврата каретки, за которой следует перевод строки . Поле «Хост» различает различные имена DNS, использующие один IP-адрес , что позволяет использовать виртуальный хостинг на основе имени . Хотя в HTTP / 1.0 это необязательно, в HTTP / 1.1 это обязательно. ("/" ( Косая черта) обычно приводит к извлечению файла /index.html, если он есть.)

Ответ сервера

HTTP / 1.1  200  OK Дата :  понедельник, 23 мая 2005 г., 22:38:34 GMT Content-Type :  text / html; charset = UTF-8 Content-Length :  155 Последнее изменение :  среда, 8 января 2003 г., 23:11:55 GMT Сервер :  Apache / 1.3.3.7 (Unix) (Red-Hat / Linux) ETag :  "3f80f-1b6-3e1cb03b " Accept-Ranges :  bytes Connection :  close< html >  < head >  < title > Пример страницы </ title >  </ head >  < body >  < p > Привет, мир, это очень простой HTML-документ. </ p >  </ body > </ html >

Поле заголовка ETag (тег объекта) используется для определения того, идентична ли кэшированная версия запрошенного ресурса текущей версии ресурса на сервере. Content-Type указывает тип Интернет-носителя данных, передаваемых HTTP-сообщением, а Content-Length указывает его длину в байтах. Веб- сервер HTTP / 1.1 публикует свою способность отвечать на запросы для определенных диапазонов байтов документа, устанавливая поле Accept-Ranges: bytes . Это полезно, если клиенту необходимо иметь только определенные части [42] ресурса, отправленные сервером, что называется обслуживанием байтов . Когда подключение: закрытьотправлено, это означает, что веб-сервер закроет TCP- соединение сразу после передачи этого ответа.

Большинство строк заголовка необязательны. Если Content-Length отсутствует, длина определяется другими способами. При кодировании с фрагментированной передачей размер фрагмента равен 0, чтобы пометить конец содержимого. Кодирование идентификаторов без Content-Length считывает содержимое, пока сокет не будет закрыт.

Content-Encoding , как Gzip может быть использован для сжатия передаваемых данных.

Подобные протоколы

  • Протокол Gopher - это протокол доставки контента, который был вытеснен HTTP в начале 1990-х годов.
  • Протокол SPDY является альтернативой HTTP, разработанной в Google , замененной HTTP / 2 .
  • Протокол Gemini - это протокол, вдохновленный Gopher, который требует функций, связанных с конфиденциальностью.

Смотрите также

  • Сравнение протоколов передачи файлов
  • Протокол ограниченного приложения - семантически подобный протоколу HTTP, но с использованием UDP- или UDP-подобных сообщений, предназначенных для устройств с ограниченными возможностями обработки; повторно использует HTTP и другие интернет-концепции, такие как тип интернет-носителя и веб-ссылки (RFC 5988) [43]
  • Согласование содержания
  • Дайджест-проверка подлинности доступа
  • HTTP-сжатие
  • HTTP / 2 - разработан рабочей группой IETF по протоколу передачи гипертекста (httpbis) [44]
  • Список полей заголовка HTTP
  • Список кодов состояния HTTP
  • Передача репрезентативного состояния (REST)
  • Вариант объекта
  • Веб-кеш
  • WebSocket

использованная литература

  1. ^ a b c Филдинг, Рой Т .; Геттис, Джеймс; Могул, Джеффри С.; Нильсен, Хенрик Фристик; Масинтер, Ларри; Лич, Пол Дж .; Бернерс-Ли, Тим (июнь 1999 г.). Протокол передачи гипертекста - HTTP / 1.1 . IETF . DOI : 10,17487 / RFC2616 . RFC 2616 .
  2. ^ В RFC 2068 . Эта спецификация была отменена RFC 2616 в 1999 году, который также был заменен RFC 7230 в 2014 году.   
  3. ^ «Могу я использовать ... Таблицы поддержки HTML5, CSS3 и т . Д.» . caniuse.com . Проверено 2 июня 2020 .
  4. ^ «Расширение согласования протокола прикладного уровня безопасности транспортного уровня (TLS)» . IETF. Июль 2014 г. RFC 7301 . 
  5. ^ Belshe, M .; Peon, R .; Томсон, М. "Версия 2 протокола передачи гипертекста, Использование функций TLS" . Проверено 10 февраля 2015 .
  6. ^ Бенджамин, Дэвид. «Использование TLS 1.3 с HTTP / 2» . tools.ietf.org . Проверено 2 июня 2020 . Это снижает барьер для развертывания TLS 1.3, что является значительным улучшением безопасности по сравнению с TLS 1.2.
  7. Епископ, Майк (2 февраля 2021 г.). «Протокол передачи гипертекста версии 3 (HTTP / 3)» . tools.ietf.org . Проверено 7 апреля 2021 .
  8. ^ Чимпану, Каталин. «HTTP-over-QUIC будет переименован в HTTP / 3 | ZDNet» . ZDNet . Проверено 19 ноября 2018 .
  9. ^ Cimpanu, Каталин (26 сентября 2019). «Cloudflare, Google Chrome и Firefox добавляют поддержку HTTP / 3» . ZDNet . Проверено 27 сентября 2019 года .
  10. ^ «HTTP / 3: прошлое, настоящее и будущее» . Блог Cloudflare . 2019-09-26 . Проверено 30 октября 2019 .
  11. ^ «Firefox Nightly поддерживает HTTP 3 - Общие - Сообщество Cloudflare» . 2019-11-19 . Проверено 23 января 2020 .
  12. ^ «Общая операция» . RFC 2616 . п. 12. сек. 1.4. DOI : 10,17487 / RFC2616 . RFC 2616 .
  13. ^ «Классические HTTP-документы» . W3.org. 1998-05-14 . Проверено 1 августа 2010 .
  14. ^ Бернерс-Ли, Тим. «Протокол передачи гипертекста» . Консорциум World Wide Web . Проверено 31 августа 2010 года .
  15. ^ Тим Бернерс-Ли . «Исходный HTTP в соответствии с определением 1991 года» . Консорциум World Wide Web . Проверено 24 июля 2010 года .
  16. ^ Рэггетт, Дэйв. "Биография Дэйва Рэггетта" . Консорциум World Wide Web . Проверено 11 июня 2010 года .
  17. ^ Рэггетт, Дэйв; Бернерс-Ли, Тим. «Рабочая группа по протоколу передачи гипертекста» . Консорциум World Wide Web . Проверено 29 сентября 2010 года .
  18. ^ Рэггетт, Дэйв. «Планы HTTP WG» . Консорциум World Wide Web . Проверено 29 сентября 2010 года .
  19. ^ «HTTP / 1.1» . Webcom.com Глоссарий . Архивировано из оригинала на 2001-11-21 . Проверено 29 мая 2009 .
  20. ^ а б Филдинг, Рой Т .; Решке, Джулиан Ф. (июнь 2014 г.). Протокол передачи гипертекста (HTTP / 1.1): аутентификация . IETF. DOI : 10,17487 / RFC7235 . RFC 7235 .
  21. ^ a b «Формат сообщения» . RFC 7230: Синтаксис и маршрутизация сообщений HTTP / 1.1 . п. 19. сек. 3. DOI : 10,17487 / RFC7230 . RFC 7230 .
  22. ^ «Неделя Apache. HTTP / 1.1» . 090502 apacheweek.com
  23. ^ Бернерс-Ли, Тим; Филдинг, Рой Т .; Нильсен, Хенрик Фристик. «Определения методов» . Протокол передачи гипертекста - HTTP / 1.0 . IETF. С. 30–32. сек. 8. дои : 10,17487 / RFC1945 . RFC 1945 .
  24. ^ «Определения методов» . RFC 2616 . С. 51–57. сек. 9. дои : 10,17487 / RFC2616 . RFC 2616 .
  25. ^ "RFC-7210 раздел 3.1.1" . Tools.ietf.org . Проверено 26 июня 2019 .
  26. ^ "RFC-7231 раздел 4.1" . Tools.ietf.org . Проверено 26 июня 2019 .
  27. ^ "RFC-7230 раздел 3.2" . Tools.ietf.org . Проверено 26 июня 2019 .
  28. ^ Джейкобс, Ян (2004). «URI, адресуемость и использование HTTP GET и POST» . Находки группы технической архитектуры . W3C . Проверено 26 сентября 2010 года .
  29. ^ "ПОЧТА" . RFC 2616 . п. 54. сек. 9.5. DOI : 10,17487 / RFC2616 . RFC 2616 .
  30. ^ "ПОЛОЖИТЬ" . RFC 2616 . п. 55. сек. 9.6. DOI : 10,17487 / RFC2616 . RFC 2616 .
  31. ^ "ПОДКЛЮЧИТЬ" . Протокол передачи гипертекста - HTTP / 1.1 . IETF. Июнь 1999. с. 57. сек. 9.9. DOI : 10,17487 / RFC2616 . RFC 2616 . Проверено 23 февраля 2014 года .
  32. ^ Khare, Рохит; Лоуренс, Скотт (май 2000 г.). Обновление до TLS в HTTP / 1.1 . IETF. DOI : 10,17487 / RFC2817 . RFC 2817 .
  33. ^ «Примечание об уязвимости VU # 150227: конфигурации HTTP-прокси по умолчанию разрешают произвольные TCP-соединения» . US-CERT . 2002-05-17 . Проверено 10 мая 2007 .
  34. ^ Дюссо, Лиза; Снелл, Джеймс М. (март 2010 г.). Метод PATCH для HTTP . IETF. DOI : 10,17487 / RFC5789 . RFC 5789 .
  35. ^ «Метод» . RFC 2616 . п. 36. сек. 5.1.1. DOI : 10,17487 / RFC2616 . RFC 2616 .
  36. ^ a b Эдигер, Брэд (21 декабря 2007). Advanced Rails: создание промышленных веб-приложений в рекордно короткие сроки . O'Reilly Media, Inc. стр. 188. ISBN 978-0596519728. Распространенной ошибкой является использование GET для действия, обновляющего ресурс. [...] Эта проблема привлекла внимание общественности Rails в 2005 году, когда был выпущен Google Web Accelerator.
  37. ^ Кантрелл, Кристиан (2005-06-01). "Что мы узнали от Google Web Accelerator?" . Блоги Adobe . Adobe. Архивировано из оригинала на 2017-08-19 . Проверено 19 ноября 2018 .
  38. ^ Канаван, Джон (2001). Основы сетевой безопасности . Норвуд, Массачусетс: Artech House. С. 82–83. ISBN 9781580531764.
  39. ^ Залевски, Михал. «Руководство по безопасности браузера» . Проверено 30 апреля 2015 года .
  40. ^ «Chromium Issue 4527: реализовать RFC 2817: обновление до TLS в HTTP / 1.1» . Проверено 30 апреля 2015 года .
  41. ^ «Ошибка Mozilla 276813 - [RFE] Поддержка обновления RFC 2817 / TLS для HTTP 1.1» . Проверено 30 апреля 2015 года .
  42. ^ Луотонен, Ари; Франкс, Джон (22 февраля 1996 г.). Расширение получения байтового диапазона для HTTP . IETF. Идентификатор draft-ietf-http-range-retrieval-00.
  43. ^ Ноттингем, Марк (октябрь 2010 г.). Веб-ссылки . IETF. DOI : 10,17487 / RFC5988 . RFC 5988 .
  44. ^ «Протокол передачи гипертекста Bis (httpbis) - Устав» . IETF. 2012 г.


внешние ссылки

  • «История изменений для HTTP» . W3.org . Проверено 1 августа 2010 . Подробная техническая история HTTP.
  • «Проблемы проектирования для HTTP» . W3.org . Проверено 1 августа 2010 . Проблемы проектирования Бернерс-Ли при разработке протокола.
  • HTTP 0.9 - реализация в 1991 г.
Источник « https://en.wikipedia.org/w/index.php?title=Hypertext_Transfer_Protocol&oldid=1035477996 »