Руководство по HTTP. Ответы.

После получения и обработки запроса от клиента, сервер посылает ответ в виде HTTP сообщения, которое имеет вид:

  • Строка статуса (обязательный элемент)
  • Заголовок (опциональный элемент)
  • Пустая строка (указывает на окончание заголовка – обязательный элемент)
  • Тело сообщения (опциональный элемент)

Рассмотрим каждый из этих элементов по отдельности.


Строка статуса

Строка статуса содержит версию протокола, код статуса и текстовое сообщение, связанное с этим статусом


Строка-статуса = Версия-HTTP (пробел) Код-статуса (пробел) Текстовое-сообщение

Версия HTTP

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


Версия-HTTP = HTTP/1.1

Код статуса

Код статуса – это число, состоящее из трёх цифр, первая из которых определяет тип ответа, а две последующие цифры указывают конкретную ошибку.

Код и описание
1 1xx: Информационное

Означает, что запрос был успешно получен и идёт его обработка.

2 2xx: Успешное выполнение
Запрос был успешно получен, понят и принят.
3 3xx: Перенаправление                                      Последующие действия должны быть предприняты для выполнения запроса.
4 4xx: Ошибка на стороне клиент

Запрос содержит синтаксическую ошибку, либо не корректен.

5 5xx: Ошибка на стороне сервера
Сервер не может выполнить обработать корректный запрос.

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


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

Позже мы более подробно и отдельно рассмотрим заголовки General и Entity, а сейчас мы разберемся, что из себя представляют поля заголовка ответа, в общих чертах.

Поля заголовка ответа позволяют серверу предать дополнительную информацию об ответе, которая не может быть помещена в строке состояния. Эти поля дают информацию о сервере и последующем доступе к ресурсам по указанному URI запроса:

  • Accept-Ranges
  • Age
  • ETag
  • Location
  • Proxy-Authenticate
  • Retry-After
  • Server
  • Vary
  • WWW-Authenticate

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


Пример HTTP ответа

Ниже приведён пример HTTP ответа для несуществующей страницы nullpage.html на сайте proselyte.net


HTTP/1.1 404 Not Found
Date: Mon, 23 May 2016 13:49:49 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Connection: Closed
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>404 Not Found</title>
</head>
<body>
   <h1>Not Found</h1>
   <p>The requested URL /nullpage.html was not found on this server.</p>
</body>
</html>

На этом мы заканчиваем изучение HTTP ответов.

В следующей статье мы обсудим методы протокола HTTP.