Этот запрос отличается от предыдущего тем, что в нем используется метод POST, который также загружает данные на сервер. При этом сами данные содержаться в теле HTTP-запроса после пустой строки.

HTTP-ответ генерируется веб-сервером в ответ на поступивший HTTP-запрос. По своей структуре он схож с HTTP-запросом, но имеет определенные отличия. Главное отличие содержится в первой строке. Вместо имени запрашиваемого ресурса и метода запроса в ней указывается статус ответа. Статус указывает на то, насколько успешно выполнился HTTP-запрос. Например, в случае, если документ найден на сервере и может быть выдан клиенту, то статус имеет значение "ОК", которое говорит о том, что запрос выполнился успешно. Однако, могут появляться исключительные ситуации – например, документ отсутствует на сервере или у пользователя отсутствуют права на получение ресурса. Набор всевозможных статусных сообщений HTTP-ответа мы рассмотрим далее в этой лекции. Таким образом, первая строка HTTP-ответа может принимать значение "HTTP/1.1 200 OK". HTTP-заголовки в HTTP-ответе также являются важным элементом. Они характеризуют содержимое, которое передается клиенту. Например, в этих HTTP-заголовках может содержаться информация о типе содержимого (HTML-документ, изображение и т.д.), длине содержимого (размер в байтах), дате модификации, режиме кэширования и др. Все эти заголовки влияют на способ отображения данных на клиенте, а также устанавливают правила хранения данных в клиентском кэше. Типичный вид HTTP-ответа может быть следующим.

Этот запрос отличается от предыдущего тем, что в нем используется метод POST, который также загружает данные на сервер. При этом сами данные содержаться в теле HTTP-запроса после пустой строки. - student2.ru

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

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

Наиболее распространенными методами HTTP-запроса являются следующие типы методов:

GET позволяет получить информацию от сервера, тело запроса всегда остается пустым;
HEAD аналогичен GET, но тело ответа остается всегда пустым, позволяет проверить доступность запрашиваемого ресурса и прочитать HTTP-заголовки ответа;
POST позволяет загрузить информацию на сервер, по смыслу изменяет ресурс на сервере, но зачастую используется и для создания ресурса на сервере, тело запроса содержит изменяемый/создаваемый ресурс;
PUT аналогичен POST, но по смыслу занимается созданием ресурса, а не его изменением, тело запроса содержит создаваемый ресурс;
DELETE удаляет ресурс с сервера.

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

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

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

Код Описание
1xx   Информационные коды
2xx   Успешное выполнение запроса
  Запрос был обработан успешно
  Объект создан
  Информация принята
  Информация, которая не заслуживает доверия
  Нет содержимого
  Сбросить содержимое
  Частичное содержимое (например, при "докачке" файлов)
3xx   Перенаправление (чтобы выполнить запрос, нужны какие-либо действия)
  Несколько вариантов на выбор
  Ресурс перемещен на постоянной основе
  Ресурс перемещен временно
  Смотрите другой ресурс
  Содержимое не изменилось
  Используйте прокси-сервер
4xx   Проблема связана не с сервером, а с запросом
  Некорректный запрос
  Нет разрешения на просмотр ресурса
  Требуется оплата
  Доступ запрещен
  Ресурс не найден
  Недопустимый метод
  Неприемлемый запрос
  Необходима регистрация на прокси-сервере
  Время обработки запроса истекло
  Конфликт
  Ресурса больше нет
  Необходимо указать длину
  Не выполнено предварительное условие
  Запрашиваемый элемент слишком велик
  Идентификатор ресурса (URI) слишком длинный
  Неподдерживаемый тип ресурса
5xx   Ошибки на сервере
  Внутренняя ошибка сервера
  Функция не реализована
  Дефект шлюза
  Служба недоступна
  Время прохождения через шлюз истекло
  Неподдерживаемая версия HTTP


Наши рекомендации