HTTP протокол: ответ онлайн урок.


Давайте рассмотрим из чего состоит ответ сервера протокола HTTP. Ответ HTTP протокола включает следующее:



  1. Строка состояния (status line)

  2. Заголовки (headers)

  3. Тело (body)


Строка состояния является основной информацией о результате запроса. Вот перечень наиболее популярных кодов состояния:



  • 200 OK

  • 301 Moved Permanently

  • 404 Not Found

  • 403 Forbidden

  • 500 Internal server Error


Рассмотрим детальнее что стоит за этими значениями. Основная идея кода состояния зависит от того, с какой цифры он начинается:



  • 1xx Информационные. Сервер отправляет предварительный ответ, за которым может последовать другой. Примеры: 100, 101.

  • 2xx Успех. Это состояние означает, что сервер смог успешно обработать запрос. Пример: 200.

  • 3xx Переадресация. Это состояние означает, что необходимо осуществить еще один запрос. Пример: 301.

  • 4xx Ошибка клиента. Запрос не может быть обработан из-за ошибки со стороны клиента. Причиной может быть несуществующий ресурс (404) или запрос с ошибками (400).

  • 5xx Ошибка сервера. Запрос не может быть обработан из-за ошибки со стороны сервера. Причиной может быть ошибка в конфигурации сервера или ошибка в программном коде (500).


Заголовки. Точно так же, как и заголовки в запросе, заголовки в ответе отвечают за передачу дополнительной информации клиенту. Например, 


Server: Apache
Content-Language: uk
Content-Type: text/html; charset=utf-8
Content-Length: 1234

Заголовков ответа довольное большое количество. С полным списком можно ознакомиться в официальной документации или просто на страничке Википедии. Мы рассмотрим более детально некоторые из них. Например,



  • Server – имя веб-сервера

  • Last-Modified – дата последней модификации запрашиваемого ресурса

  • Content-Length – длина ответа в байтах

  • Content-Type – MIME тип запрашиваемого ресурса

  • Date – Дата и время, соответствующие текущему ответу


Рассмотрим заголовок Content-Type, который отвечает за тип содержимого в ответе. Пример:


Content-Type: text/html

Это значит, что ответ сервера является текстовым файлом (часть text в значении), и его нужно рассматривать в качестве HTML документа (часть html в значении). По факту это как раз то, что нам нужно – веб-документ. Другой пример типа содержимого может также иметь последующую форму:


Content-Type: image/jpeg

Это означает, что ответом является любая картинка формата JPEG. В данном случае мы увидим только изображение в нашем браузере и сможем сохранить его как картинку.


Тело ответа состоит из запрашиваемого веб-ресурса. В случае с HTML документом – это будет исходный HTML код страницы. Но какая связь между типом содержимого и телом ответа? Прямая. Если указана необходимость получения HTML документа, тело должно включать в себя исходный HTML код веб-страницы. Следовательно, если это изображение, тело ответа должно иметь специальный исходный JPEG код. Что произойдет, если сервер попытается отправить заголовки типа содержимого веб-документа и тело с JPEG изображением? Мы увидим то же, что бы мы увидели, открыв картинку в блокноте - много странных символов. Это ошибка.


Таким образом мы рассмотрели структуру ответа HTTP протокола и уже имеем представление о том, как он работает.