В первых версиях протокола было определено множество HTTP методов, которые не нашли должного применения. На практике оказалось, что многие функции, возлагавшиеся на эти методы, можно успешно выполнять с помощью POST.
Изменение числа методов доступа отражает практику использования HTTP. Однако, с исторической и методической точек зрения, первые версии протокола представляют несомненный интерес, особенно раздел, описывающий методы доступа. В версии 1993 года насчитывалось 13 различных методов доступа. Среди этих методов были такие, например, как:
- CHECKOUT — защита от несанкционированного доступа.
- PUT — замена содержания информационного ресурса.
- DELETE — удаление ресурса.
- LINK — создание гипертекстовой ссылки.
- UNLINK — удаление гипертекстовой ссылки.
- SPACEJUMP — переход по координатам.
- SEARCH — поиск.
Из списка видно, что протокол был максимально ориентирован на работу с гипертекстовыми распределенными системами, причем не только с точки зрения потребителя, но и с точки зрения разработчика подобных систем. Однако, во-первых, как показывал опыт, практически не использовались методы доступа, связанные с изменением информации. Это объясняется прежде всего соображениями безопасности. Во-вторых, многие методы были с успехом заменены на функционально аналогичные CGI программы — программы, автоматически генерирующие ресурс, при обращении к определенному URI.
|
|
HTTP сообщения
Под сообщениями HTTP понимаются как запросы клиента к серверу, так и ответы сервера клиенту.
И запросы и ответы используют для передачи данных формат, определенный для сообщений электронной почты в RFC 822. Оба типа сообщений состоят из первой строки, некоторого количества полей заголовка, пустой строки и, возможно, тела сообщения.
В общем виде HTTP сообщение можно представить следующим образом:
{первая строка}{имя поля заголовка}: {значение поля заголовка}...{пустая строка}{тело сообщения}Обязательными элементами HTTP сообщения являются только первая строка и пустая строка.
Запрос
В общем виде HTTP запрос выглядит следующим образом:
{строка запроса}{имя поля заголовка}: {значение поля заголовка}...{пустая строка}{тело сообщения}Строка запроса состоит из имени метода HTTP, URI запрашиваемого ресурса и версии протокола. URI запрашиваемого ресурса может быть относительным. Строка запроса может выглядеть следующим образом:
GET http://www.w3.org/ HTTP/1.1Необходимо отметить, что не смотртя на то, что HTTP сообщение может не иметь ни одного поля заголовка, запрос обязательно должен содержать поле заголовка «Host». Это требование было определено в последней версии протокола и обусловлено проблемами, которые возникали ранее при ситуации, когда одна программа-сервер обслуживала запросы для нескольких виртуальных узлов.
Ответ
В общем виде HTTP ответ выглядит следующим образом:
{строка состояния}{имя поля заголовка}: {значение поля заголовка}...{пустая строка}{тело сообщения}Строка состояния состоит из версии протокола, кода состояния и краткого описания этого кода. Например, она может выглядеть так:
HTTP/1.1 200 OK