Giga-Forum.ru

Форум для всех и обо всем!
login.php profile.php?mode=register faq.php memberlist.php search.php index.php

Giga-Forum.ru » Веб-дизайн, разработка сайтов и создание баннеров » описание http - Hypertext transfer protocol (http) - описание протокола http, методы POST и GET, коды ответов сервера
      ::  
описание http - Hypertext transfer protocol (http) -
: 13, 2004 1:53 pm
Николай Попко
: 15.11.2004
: 1340




описание http - Hypertext transfer protocol (http) - описание протокола http, методы POST и GET, коды ответов сервера








Формат и описание заголовков http и коды ответа http сервера:





Описание HTTP/1.0








Hypertext transfer protocol (HTTP ), протокол пересылки гипертекста - это язык,


которым клиенты и серверы World Wide Web пользуются для общения между собой.





Принципы работы


Все HTTP-трнзакции имеют один общий формат. Каждый запрос клиента и ответ


сервера состоит из трех частей: строки запроса (ответа), раздела заголовка


и тела. Клиент инициирует транзакцию следующим образом:


1. Клиент устанавливает связь с сервером по назначенному номеру порта (по умолчанию 80).


Затем клиент посылает запрос документа, указав HTTP-команду, называемую методом,


адрес документа и номер версии HTTP.


Например, в запросе





Код:
GET /index.html HTTP/1.0 используется метод GET, которым с помощью версии 1.0 HTTP запрашивается документ


index.html.









2. Клиент посылает информацию заголовка (необязательную), чтобы сообщить серверу


информацию о своей конфигурации и данные о форматах документов, которые он может


принимать. Вся информация заголовка указывается построчно, при этом в каждой строке


приводится имя и значение. Например, приведенный ниже заголовок, посланный клиентом,


содержит его имя и номер версии, a также информацию о некоторых предпочтительных


для клиента типах документов:





Код:
USER-AGENT: Mozilla/2.02Gold (WinNT; I)


Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*








Завершается пустой строкой.








3. Послав запрос и заголовки, клиент может отправить и дополнительные данные. Эти данные


используются главным образом теми CGI-программами, которые применяют метод POST.


Клиенты могут их использовать для помещения отредактированной страницы обратно


на Web-сервер.





Сервер отвечает на запросы клиента следующим образом:


1. Первая часть ответа сервера - строка состояния, содержащая три поля: версию HTTP, код


состояния и описание. Поле версии содержит номер версии HTTP, которой данный сервер


пользуется для передачи ответа.


Код состояния - это трехразрядное число, обозначающее результат обработки сервером


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


понятный для человека текст, поясняющий код состояния. Например, строка состояния





Код:
HTTP/1.0. 200 OK



говорит о том, что сервер для ответа использует версию HTTP 1.0. Код состояния 200 означает, что запрос клиента был успешным и затребованные данные будут переданы после заголовков.


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





Код:
Date: Fri, 20 Mar 1999 08:17:58 GMT


Server: NCSA/1.5.2


Last-modified: Mon, 17 Jun 1996 21:53:08 GMT


Content-type: text/html


Content-lenght: 2482





Завершает заголовок пустая строка.





3. Если запрос клиента успешен, то посылаются затребованные данные. Это может быть копия


файла или результат выполнения CGI-программы. Если запрос клиента удовлетворить нельзя,


передаются дополнительные данные в виде понятного для пользователя разьяснения причин,


по которым сервер не смог выполнить данный запрос.





В HTTP 1.0 за передачей сервером затребованных данных следует зазъединение с клиентом и


транзакция считается завершенной, если не передан заголовок Conection: Кeep Alive. В


HTTP 1.1 сервер по умолчанию не разрывает соединение и клиент может посылать другие запросы.


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


это позволяет сэкономить время и затраты клиента, которому в противном случае пришлось бы


для получения всего одной страницы многократно соединяться с одним и тем же сервером. Таким образом, в HTTP 1.1 транзакция может циклически повторяться, пока клиент или сервер


не закроет соединение явно. HTTP не сохраняет информацию по тразакциям, поэтому в следующей трнзакции приходится


начинать все заново. Преимущество состоит в том, что HTTP-сервер может обслужить в заданный


промежуток времени гораздо больше клиентов, ибо устраняются дополнительные расходы на


отслеживание сеансов от одного соединения к другому. Есть и недостаток: для сохранения


информации по транзакциям более сложные CGI-программы должны пользоваться скрытыми


полями ввода или внешними средствами, например "ключиками" NetScape.








Запросы клиента





Запросы клиента разбиваются на три раздела. Первая строка сообщения всегда содержит


HTTP-команду, называемую методом, URI, который обозначает запрашиваемый клиентом файл


или ресурс, и номер версии HTTP. Следующие строки запроса клиента содержат информацию


заголовка. Информация заголовка содержит сведения о клиенте и информационном объекте,


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


содержимого - собственно данные, посылаемые серверу.


URI (Uniform Resource Identifier, универсальный идентификатор ресурса) - это общий термин для всех допустимых форматов схем адресации, поддерживаемых в WWW. Сейчас


общепринятой является схема адресации с использованием универсальных локаторов ресурсов (URL).





Методы


Метод - это HTTP-команда, с которой начинается первая строка запроса клиента. Метод


сообщает серверу о цели запроса. Для HTTP определены три основных метода: GET, POST и HEAD. Определены и другие методы, но они не так широко поддерживаются серверами, как


три перечисленных ( хотя эти другие методы в будущем могут использоваться чаще).


При задании имен методов учитывается регистр, поэтому GET и get различаются.





Метод GET.


GET - зто запрос информации, расположенной на сервере по указанному URL. GET -


наиболее распространенный метод поиска с помощью броузеров документов для визуализации.


Результат запроса GET может представлять собой, например, файл, доступный для сервера,


результат выполнения программы или CGI-сценария, выходную информацию аппаратного


устройства и т.д.


Если клиент пользуется в своем запросе методом GET, сервер отвечает строкой состояния,


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


вследствие ошибки или отсутствия полномочий, он, как правило, посылает в информационном


разделе ответа текстовое пояснение.


Тело информационного содержимого запроса GET всегда пустое. GET в переводе на


человеческий язык означает примерно следующее:"Дайте мне этот файл". Для иднтификации


указанных в запросе клиента файла или программы обычно используется полное имя обьекта


на сервере.


Ниже приведен пример успешного запроса GET на получение файла. Клиент посылает запрос:


GET /index.html HTTP/1.0


Connction: Keep-Alive


User-Agent: Mozilla/2.02Gold (WinNT; I)


Host: www.reklama.su


Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* Сервер отвечает:


HTTP/1.0 200 Document follows


Date: Fri, 20 Sep 1996 08:17:58 GMT


Server: NCSA/1.5.2


Content-type: text/html


Content-lenght: 2482


(далее следует тело документа) Метод GET используется также для передачи выходной информации в CGI-программы


посредством тегов форм. Поскольку тело запроса GET пусто, входные данные присоединяются


к URL в строке GET запроса. Если в теге


задано значение атрибута method="GET",


то пары ключ-значение, представляющие собой введенные данные из формы, присоединяются к


URL после вопросительного знака. Пары отделяются друг от друга амперсандом (&).


Например, по запросу


GET /cgi-bin/birthday.pl?month=august&date=24 HTTP/1.0


сервер передаст в CGI-программу birthday.pl значение month и date, указанные в форме,


созданной на клиенте. Входные данные в конце URL кодируются в спецификации CGI. Чтобы


специальные символы интерпритировались обычным образом, используются шестнадцатиричные


коды.


Аналогичным образом в методе GET может передаваться информация о дополнительных путях.


При этом дополнительный путь указывается после URL, т.е. /cgi-bin/display.pl/cgi/


cgi_doc.txt. Сервер определяет, где заканчивается имя программы (display.pl).


Все данные, которые следуют за именем программы, интерпритируются как дополнительный


путь.





Метод HEAD.


Метод HEAD аналогичен методу GET, за исключением того, что сервер ничего не посылает


в информационной части ответа. Метод HEAD запрашивает только информацию заголовка о


файле и ресурсе. Инфоримация заголовка запроса HEAD должна быть такой же, как в запросе


GET.


Этот метод используется, когда клиент хочет найти информацию о документе, не получая


его. Для метода HEAD существует множество приложений. Например, клиент может


затребовать следующую информацию:


* время изменения документа ( эти данные полезны для запросов, связанных с кэш-памятью);


* размер документа (необходим для компоновки страницы, оценки времени передачи,


определения необходимости запроса более компактной версии документа);


* тип документа (позволяет клиенту изучать документы только определенного типа);


* тип сервера;


Следует отметить, что большая часть информации заголовка, которую посылает сервер, не


является обязательной и может предоставляться не всеми срверами.


Ниже приведен пример HTTP-транакции с использованием запроса HEAD. Клиент посылает


запрос:





Код:
HEAD /index.html HTTP/1.0


Connection: Kep-Alive


User-Agent: Mozilla/2.02Gold (WinNT; I)


Host: www.reklama.su


Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* Сервер отвечает:


HTTP/1.0 200 Document follows


Date: Fri, 20 Sep 1996 08:17:58 GMT


Server: NCSA/1.5.2


Last-modified: Mon, 17 Jun 1996 21:53:08 GMT


Content-type: text/html


Content-lenght: 2482






(Тело содержимого в ответ на запрос HEAD не передается.)





Метод POST.





Метод POST позволяет посылать на сервер данные в запросе клиента. Эти данные


направляются в программу обработки данных, к которой сервер имеет доступ (например,


в CGI-сценарий). Метод POST может использоваться во многих приложениях. Например, его


можно применять для передачи входных данных для:


- сетевых служб (таких как телеконференции);


- программ с интерфейсом в виде командной строки;


- аннотирования документов на сервере;


- выполнения операций в базах данных.


Данные, посылаемые на сервер, находятся в теле содержимого запроса клиента. По завершении обработки запроса POST и заголовков сервер передает тело содержимого в


программу, заданную URL. В качестве схемы кодирования с методом POST используется URL-


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


значений для CGI-обработки.


Ниже приведен небольшой пример запроса клиента с использованием метода POST. Клиент


посылает на сервер данные о дне рождения, введенные в форму:





Код:
POST /cgi-bin/birtday.pl HTTP/1.0 User-Agent: Mozilla/2.02Gold (WinNT; I)


Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*


Host: www.reklama.su Content-type: application/x-www-form-urlencoded


Content-lenght: 20





month=august&date=24






Другие методы.





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


LINK - Связывает информацию заголовка с документом на сервере.


ULINK - Отменяет связь информации заголовка с документом на сервере.


PUT - Помещает тело содержимого запроса по указанному URL.


DELETE - Удаляет данные, находящиеся на сервере по заданному URL.


OPTIONS - Запрашивает информацию о коммутационных параметрах сервера. Чтобы запросить данные обо всем сервере в целом, вместо URL запроса следует использовать


символ *.


TRACE - Требует, чтобы тело содержимого запроса было возвращено без изменений. Используется для отладки.








Запросы клиента.





Ответ сервера на запрос клиента состоит из трех частей.


Первая строка - это строка состояния сервера, которая содержит номер версии HTTP, число,


обозначающее состояние запроса, и краткое описание состояния.


После строки ответа следует информация заголовка и тело содержимого, если оно есть.





Структура ответов http сервера - Коды ответов сервера.





Коды ответов сервера: 100 - 199 - Информационный


100 Continue


Начальная часть запроса принята и клиент может продолжать передачу запроса.


Код ответа сервера: 101 Switching Protocols


Сервер выполняет требование клиента и переключает протоколы в соответствии


с указанием, данным в поле заголовка Upgrade.





Коды сервера: 200 - 299 - Запрос клиента успешен


Код сервера: 200 OK


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





Коды ответов сервера: 300 - 399 - Запрос клиента переадресован, необходимы дальнейшие действия


Коды ответов сервера: 400 - 499 - Запрос клиента является неполным


Коды ответов сервера: 500 - 599 - Ошибки сервера





Более подробно в книге Stephen Spainhour и Valerie Quercia "Webmaster in a nutshell".


Перевод c английского С.М.Тимачева, под редакцией К.Ю.Королькова:








Коды ответов HTTP сервера


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








Коды состояний обычно генерируются Web-серверами, но иногда это могут делать и CGI-сценарии, CGI-сценарии генерируют собственные заголовки вместо тех, которые должен выдавать сервер. Коды состояний группируются следующим образом:





Диапазон кодов Значение ответа


100-199 Информационный


200-299 Запрос клиента успешен


300-399 Запрос клиента переадресован, необходимы дальнейшие действия


400-499 Запрос клиента является неполным


500-599 Ошибки сервера








В HTTP в каждом диапазоне определены лишь несколько кодов, хотя для сервера при необходимости могут определяться собственные коды. Клиент при получении кода, который он не может распознать, интерпретирует его в соответствии с диапазоном, к которому этот код принадлежит. Коды в диапазонах 100-199, 200-299 и 300-399 большинство Web-броузеров обрабатывают без извещения пользователя, а некоторые коды ошибок из диапазонов 400-499 и 500-599 отображаются для пользователя (например, 404 Not Found).











Информационные ответы








Ответы в диапазоне 100-199 - информационные; они показывают, что запрос клиента принят и обрабатывается.








100 Continue


Начальная часть запроса принята, и клиент может продолжать передачу запроса.





101 Switching Protocols


Сервер выполняет требование клиента и переключает протоколы в соответствии с указанием, данным в поле заголовка Upgrade.








Успешные запросы клиента








Ответы в диапазоне 200-299 означают, что запрос клиента обработан успешно.








200 OK


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





201 Created


Этот код состояния используется в случае создания нового URI. Вместе с этим кодом результата сервер выдает заголовок Location (см. главу 19), который содержит информацию о том, куда были помещены новые данные.





202 Accepted


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





203 Non-Authoritative Information


Информация в заголовке содержимого взята из локальной копии или у третьей стороны, а не с исходного сервера.





204 No Content


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





205 Reset Content


Броузер должен очистить форму, используемую в данной транзакции, для дополнительных входных данных. Полезен для CGI-приложений, требующих ввода данных.





206 Partial Content


Сервер возвращает лишь часть данных затребованного объема. Используется в ответе на запрос с указанием заголовка Range. Сервер должен указать диапазон, включенный в ответ, в заголовке Content-Range.











Переадресация











Код ответа в диапазоне 300-399 означает, что запрос не выполнен и клиенту нужно предпринять некоторые действия для удовлетворения запроса.





300 Multiple Choices


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





301 Moved Permanently


Затребованный URI уже не используется сервером, и указанная в запросе операция не выполнена. Новое местонахождение затребованного документа указывается в заголовке Location. Во всех последующих запросах данного документа следует указывать новый URI.





302 Moved Temporarily


Затребованный URI перемешен, но лишь временно. Заголовок Location указывает на новое местонахождение. Сразу же после получения этого кода состояния клиент должен разрешить запрос при помощи нового URI, но во всех последующих запросах необходимо пользоваться старым URI.





303 See Other


Затребованный URI можно найти по другому URI (указанному в заголовке Location). Его следует выбрать методом GET по данному ресурсу.





304 Not Modified


Это код ответа на заголовок lf-Modified-Since, если URI не изменялся с указанной даты. Тело содержимого не посылается, и клиент должен использовать свою локальную копию.





305 Use Proxy


Доступ к затребованному URI должен осуществляться через proxy-сервер, указанный в заголовке Location.











Неполные запросы клиента











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





400 Bad Request


Означает, что сервер обнаружил в запросе клиента синтаксическую ошибку.





401 Unauthorized


Этот код результата, передаваемый с заголовком WWW-Authenticate, показывает, что пославший запрос пользователь не имеет необходимых полномочий и что при повторении запроса с указанием данного URI пользователь должен такие полномочия предоставить.





402 Payment Required


Этот код в HTTP еще не реализован.





403 Forbidden


Запрос отклонен по той причине, что сервер не хочет (или не имеет возможности) ответить клиенту.





404 Not Found


Документ по указанному URI не существует.





405 Method Not Allowed


Этот код выдается с заголовком Allow и показывает, что метод, используемый клиентом, для данного URI не поддерживается.





406 Not Acceptable


Ресурс, указанный клиентом по данному URI, существует, но не в том формате, который нужен клиенту. Вместе с этим кодом сервер выдает заголовки Content-Language, Content-Encoding и Content-Type.





407 Proxy Authentication Required


Proxy-сервер должен санкционировать запрос перед тем, как пересылать его. Используется с заголовком Proxy-Authenticate.





408 Request Time-out


Этот код ответа означает, что клиент не передал полный запрос в течение некоторого установленного промежутка времени (который обычно задается в конфигурации сервера) и сервер разрывает сетевое соединение.





409 Conflict


Данный запрос конфликтует с другим запросом или с конфигурацией сервера. Информацию о конфликте следует возвратить в информационной части ответа.





410 Gone


Данный код показывает, что затребованный URI больше не существует и навсегда удален с сервера.





411 Length Required


Сервер не примет запрос без указанного в нем заголовка Content-Length.





412 Precondition Failed


Результат вычисления условия, заданного в запросе одним или несколькими заголовками if. . ., представляет собой "ложь".





413 Request Entity Too Large


Сервер не будет обрабатывать запрос, потому что его тело слишком велико.





414 Request-URI Too Long


Сервер не будет обрабатывать запрос, потому что его URI слишком длинный.





415 Unsupported Media Type


Сервер не будет обрабатывать запрос, потому что его тело имеет неподдерживаемый формат.











Ошибки сервера











Коды ответов в диапазоне 500-599 показывают, что сервер столкнулся с ошибкой и, вероятно, не сможет выполнить запрос клиента.





500 Internal Server Error


При обработке запроса на сервере один из его компонентов (например, CGI-программа) выдал аварийный отказ или столкнулся с ошибкой конфигурации.





501 Not Implemented


Клиент запросил выполнение действия, которое сервер выполнить не может.





502 Bad Gateway


Сервер (или proxy-сервер) получил недопустимые ответы другого сервера (или proxy-сервера).





503 Service Unavailable


Данный код означает, что данная служба временно недоступна, но в будущем доступ к ней будет восстановлен. Если сервер знает, когда это произойдет, может быть также выдан заголовок Retry-After.





504 Gateway Time-out


Этот ответ похож на 408 (Request Time-out) , за исключением того, что шлюз или уполномоченный сервер превысил лимит времени.





505 HTTP Version not supported


Сервер не поддерживает версию протокола HTTP, использованную в запросе.
описание http - Hypertext transfer protocol (http) - описание протокола http, методы POST и GET, коды ответов сервера
Giga-Forum.ru » Веб-дизайн, разработка сайтов и создание баннеров





: GMT + 3  
1 1