Формат HTTP-сообщений

Протокол HTTP 0.9 действует по простейшему принципу, передавая полезные данные в виде «как есть» и не предусматривая никаких служебных заголовков.
HTTP 1.0 явился значительным шагом вперед. Его главным завоеванием стала возможность снабжать сообщения метаданными о передаваемых объектах в соответствии с правилами MIME (Multipurpose Internet Mail Extensions, многоцелевые расширения для электронной почты), что позволило существенно облегчить «взаимопонимание» между клиентским и серверным программным обеспечением (ПО). Формат сообщений протокола HTTP 0.9 был включен в спецификацию HTTP 1.0 как возможное подмножество.
Спецификация HTTP 1.1 выдвигает более строгие требования к формату сообщений. Кроме того, последняя версия HTTP содержит ряд усовершенствований, касающихся особенностей работы с прокси-серверами, кэшированием, виртуальными хостами и постоянными соединениями (обсуждавшимися нами выше).
Дальнейшее рассмотрение протокола HTTP в этой книге будет осуществляться именно на примере спецификации HTTP 1.1, получившей, напомню, наибольшее распространение в настоящее время.
Сообщения запроса и ответа в рамках протокола HTTP имеют общий формат.
Как запрос, так и ответ обязательно предваряется начальной строкой. В сообщении запроса она иначе называется строкой запроса, а в сообщении ответа — строкой статуса.
Далее, начиная с новой строки, могут следовать одно или несколько необязательных полей заголовка, каждое — на отдельной строке.
Эта часть HTTP-сообщения должна непременно оканчиваться пустой строкой.
Примечание
Пользуясь понятиями «новая строка», «пустая строка» и т. п., мы подразумеваем, что каждая строка венчается двумя символами — CR (Carriage Return, возврат каретки, десятичный ASCII-код — 13) и LF (Line Feed, перевод строки, десятичный ASCII-код — 10). Именно такое требование выдвигается спецификациями протокола HTTP. Памятуя о том, что переход на новую строку в текстовых форматах на UNIX-системах обходится одним лишь символом LF, следует обратить особое внимание на этот нюанс.
За пустой строкой, завершающей служебную информацию, могут располагаться дополнительные данные — тело сообщения.
Если речь идет о сообщении ответа сервера, в теле может помещаться, например, HTML-код запрошенной клиентом веб-страницы. В контексте сообщения запроса клиента тело может представлять собой какие-либо пользовательские данные, которые надлежит передать на обработку при помощи некоего приложения стороны сервера.
Рассмотрим структуру HTTP-сообщений запроса и ответа более детально.


© 2008-2018 ОптимизацияВебСайтов.ру


Любое использование текстового и графического контента сайта без активной ссылки на источник не доскается.