From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- files/ru/web/http/messages/index.html | 147 ++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 files/ru/web/http/messages/index.html (limited to 'files/ru/web/http/messages/index.html') diff --git a/files/ru/web/http/messages/index.html b/files/ru/web/http/messages/index.html new file mode 100644 index 0000000000..0aa51b52a1 --- /dev/null +++ b/files/ru/web/http/messages/index.html @@ -0,0 +1,147 @@ +--- +title: Сообщения HTTP +slug: Web/HTTP/Messages +tags: + - HTTP + - ВебМеханика + - Руководство +translation_of: Web/HTTP/Messages +--- +
{{HTTPSidebar}}
+ +

HTTP сообщения - это обмен данными между сервером и клиентом. Есть два типа сообщений: запросы, отправляемые клиентом, чтобы инициировать реакцию со стороны сервера, и ответы от сервера.

+ +

Сообщения HTTP состоят из текстовой информации в кодировке ASCII, записанной в несколько строк. В HTTP/1.1 и более ранних версиях они пересылались в качестве обычного текста. В HTTP/2 текстовое сообщение разделяется на фреймы, что позволяет выполнить оптимизацию и повысить производительность.

+ +

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

+ +

From a user-, script-, or server- generated event, an HTTP/1.x msg is generated, and if HTTP/2 is in use, it is binary framed into an HTTP/2 stream, then sent.

+ +

Механизм бинарного фрагментирования в HTTP/2 разработан так, чтобы не потребовалось вносить изменения в имеющиеся APIs и конфигурационные файлы: он вполне прозрачен для пользователя.

+ +

HTTP запросы и ответы имеют близкую структуру. Они состоят из:

+ +
    +
  1. Стартовой строки, описывающей запрос, или статус (успех или сбой). Это всегда одна строка.
  2. +
  3. Произвольного набора HTTP заголовков, определяющих запрос или описывающих тело сообщения.
  4. +
  5. Пустой строки, указывающей, что вся мета информация отправлена.
  6. +
  7. Произвольного тела, содержащего пересылаемые с запросом данные (например, содержимое HTML-формы ) или отправляемый в ответ документ. Наличие тела и его размер определяется стартовой строкой и заголовками HTTP.
  8. +
+ +

Стартовую строку вместе с заголовками сообщения HTTP называют головой запроса, а его данные - телом.

+ +

Requests and responses share a common structure in HTTP

+ +

Запросы HTTP

+ +

Стартовая строка

+ +

HTTP запросы - это сообщения, отправляемые клиентом, чтобы инициировать реакцию со стороны сервера. Их стартовая строка состоит из трех элементов:

+ +
    +
  1. +

    Метод HTTP, глагол (например, {{HTTPMethod("GET")}}, {{HTTPMethod("PUT")}} или {{HTTPMethod("POST")}}) или существительное (например,  {{HTTPMethod("HEAD")}} или {{HTTPMethod("OPTIONS")}}), описывающие требуемое действие. Например, GET указывает, что нужно доставить некоторый ресурс, а POST означает отправку данных на сервер (для создания или модификации ресурса, или генерации возвращаемого документа).

    +
  2. +
  3. Цель запроса, обычно {{glossary("URL")}}, или абсолютный путь протокола, порт и домен обычно характеризуются контекстом запроса. Формат цели запроса зависит от используемого HTTP-метода. Это может быть +
      +
    • Абсолютный путь, за которым следует '?' и строка запроса. Это самая распространенная форма, называемая исходной формой (origin form) . Используется с методами GET, POST, HEAD, и OPTIONS.
      + POST / HTTP 1.1
      + GET /background.png HTTP/1.0
      + HEAD /test.html?query=alibaba HTTP/1.1
      + OPTIONS /anypage.html HTTP/1.0
    • +
    • Полный URL - абсолютная форма (absolute form) , обычно используется с GET при подключении к прокси.
      + GET http://developer.mozilla.org/ru/docs/Web/HTTP/Messages HTTP/1.1
    • +
    • Компонента URL "authority", состоящая из имени домена и (необязательно) порта (предваряемого символом ':'), называется authority form. Используется только с методом CONNECT при установке туннеля HTTP.
      + CONNECT developer.mozilla.org:80 HTTP/1.1
    • +
    • Форма звездочки (asterisk form), просто "звездочка" ('*') используется с методом OPTIONS и представляет сервер.
      + OPTIONS * HTTP/1.1
    • +
    +
  4. +
  5. Версия HTTP, определяющая структуру оставшегося сообщения, указывая, какую версию предполагается использовать для ответа.
  6. +
+ +

Заголовки

+ +

Заголовки запроса HTTP имеют стандартную для заголовка HTTP структуру: не зависящая от регистра строка, завершаемая (':') и значение, структура которого определяется заголовком. Весь заголовок, включая значение, представляет собой одну строку, которая может быть довольно длинной.

+ +

Существует множество заголовков запроса. Их можно разделить на несколько групп:

+ + + + + +

Тело

+ +

Последней частью запроса является его тело. Оно бывает не у всех запросов: запросы, собирающие (fetching) ресурсы, такие как GET, HEAD, DELETE, или OPTIONS, в нем обычно не нуждаются. Но некоторые запросы отправляют на сервер данные для обновления, как это часто бывает с запросами POST (содержащими данные HTML-форм).

+ +

Тела можно грубо разделить на две категории:

+ + + +

Ответы HTTP

+ +

Строка статуса (Status line)

+ +

Стартовая строка ответа HTTP, называемая строкой статуса, содержит следующую информацию:

+ +
    +
  1. Версию протокола, обычно HTTP/1.1.
  2. +
  3. Код состояния (status code), показывающая, был ли запрос успешным. Примеры: {{HTTPStatus("200")}}, {{HTTPStatus("404")}} или {{HTTPStatus("302")}}
  4. +
  5. Пояснение (status text). Краткое текстовое описание кода состояния, помогающее пользователю понять сообщение HTTP..
  6. +
+ +

Пример строки статуса: HTTP/1.1 404 Not Found.

+ +

Заголовки

+ +

Заголовки ответов HTTP имеют ту же структуру, что и все остальные заголовки: не зависящая от регистра строка, завершаемая двоеточием (':') и значение, структура которого определяется типом заголовка. Весь заголовок, включая значение, представляет собой одну строку.

+ +

Существует множество заголовков ответов. Их можно разделить на несколько групп:

+ + + +

Example of headers in an HTTP response

+ +

Тело

+ +

Последней частью ответа является его тело. Оно есть не у всех ответов: у ответов с кодом состояния, например, {{HTTPStatus("201")}} или {{HTTPStatus("204")}}, оно обычно отсутствует.

+ +

Тела можно разделить на три категории:

+ + + +

Фреймы HTTP/2

+ +

Сообщения HTTP/1.x имеют несколько недостатков в отношении производительности:

+ + + +

HTTP/2 переходит на новый уровень: он делит сообщения HTTP/1.x на фреймы, которые внедряются в поток. Фреймы данных из заголовков отделены друг от друга, что позволяет сжимать заголовки. Несколько потоков можно объединять друг с другом - такой процесс называется мультиплексированием - что позволяет более эффективно использовать TCP-соединения.

+ +

HTTP/2 modify the HTTP message to divide them in frames (part of a single stream), allowing for more optimization.

+ +

Фреймы HTTP сейчас прозрачны для веб-разработчиков. Это дополнительный шаг, который HTTP/2 делает по отношению к сообщениям HTTP/1.1 и лежащему в основе транспортному протоколу. Для реализации фреймов HTTP веб-разработчикам не требуется вносить изменения в имеющиеся APIs; если HTTP/2 доступен и на сервере, и на клиенте, он включается и используется.

+ +

Заключение

+ +

Сообщения HTTP играют ключевую роль в использовании HTTP; они имеют простую структуру и хорошо расширяемы. Механизм фреймов в HTTP/2 добавляет еще один промежуточный уровень между синтаксисом HTTP/1.x и используемым им транспортным протоколом, не проводя фундаментальных изменений: создается надстройка над уже зарекомендовавшими себя методами.

-- cgit v1.2.3-54-g00ecf