UP
 
Содержание запроса и ответа
Как видно на рисунке все транзакции между клиентом и сервером происходят
на верхнем уровне сетевой иерархии. Все HTTP-транзакции имеют один общий 
формат. Каждый запрос клиента и ответ сервера состоит из трех частей: 
строки запроса (ответа), раздела заголовка и тела.
 
  
Клиент инициирует транзакцию следующим образом:
 
- Клиент устанавливает связь с сервером по назначенному номеру порта 
    (по умолчанию - 80). Затем посылается запрос документа с указанием HTTP
    комманды (называемой методом), адреса документа и номера версии HTTP.
    Например:
    
GET /index.html HTTP/1.0 
 - Клиент посылает необязательную информацию заголовка, чтобы сообщить серверу
    информацию о своей конфигурации и данные о форматах документов, которые он
    может принимать. Вся информация заголовка указывается построчно и каждая
    строка содержит пару имя-значение. Заголовок завершается пустой строкой.
    Например:
    
       User-Agent: Mozilla/2.02Gold (WinNT; I) 
       Accept: image/gif, image/jpeg, */*
     
 - Послав запрос и заголовки, клиент может отправить дополнительные данные 
    (тело запроса). Эти данные используются, например, CGI-программами, 
    применяющими метод POST.
  
Сервер отвечает на запрос клиента следующим образом:
- Первая часть ответа - строка состояния, содержащая версию протокола HTTP, 
    код состояния и описание, которое представляет собой просто понятный для
    человека текст, поясняющий код состояния. Например:
    
HTTP/1.0 200 OK 
 - После строки состояния сервер передает клиенту информацию заголовка ответа, 
    содержащую данные о самом сервере и затребованном документе. 
    Завершает заголовок пустая строка. Например:
    
       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-length: 2482
     
 - Если запрос клиента успешен, то сервер посылает затребованные данные. Это
    может быть копия файла или документ сформированный "на лету". Если запрос
    клиента удовлетворить нельзя, то сервер передает дополнительные данные в
    виде удобного для человека разъяснения причин, по которым сервер не смог 
    выполнить запрос.
  
В HTTP 1.0 после передачи сервером затребованных данных следует разъединение с
клиентом и транзакция завершается, если не был передан заголовок 
Connection: Keep Alive. В HTTP 1.1 сервер по умолчанию не разрывает 
соединение и клиент может посылать другие запросы. Это позволяет сэкономить
время и затраты клиента, которому не приходится заново соединяться с тем же
сервером. Таким образом, в HTTP 1.1 транзакция может циклически повторяться, 
пока клиент или сервер не закроет соединение явно.
 Методы
Метод - это HTTP-комманда, с которой начинается первая строка запроса клиента.
Метод сообщает серверу о цели запроса. Чаще всего используются методы GET, 
HEAD и POST (регистр имеет значение).
- GET
 - Этим методом запрашивается информация, расположенная на сервере в указанном
    в запросе месте. Методом GET web браузеры обычно получают документы для 
    визуализации. Результатом такого запроса может быть, например, файл, лежащий
    на сервере или же сформированный специально для этого запроса. Например:
    
    GET / HTTP/1.0 
    User-Agent: Simple Web client by Eugen Kuleshov 
    Accept: */*
     
  - HEAD
 - Метод HEAD аналогичен методу GET, за исключением того, что
    сервер не посылает тело ответа, а только информацию заголовка о запрошенном 
    файле или ресурсе. Обычно этот метод используется для получения информации
    о документе не получая документ. Можно, например, затребовать следующую 
    информацию:
    
    - время изменения документа;
    
 - размер документа;
    
 - тип документа;
    
 - тип сервера.
    
  
    Следует отметить, что большая часть посылаемой сервером информации заголовка,
    не является обязательной и может представляться не всеми web серверами. 
    Например:
     
    HEAD / HTTP/1.0 
    User-Agent: Simple Web client by Eugen Kuleshov 
    Accept: */*
     
  - POST
 - Этот метод позволяет посылать на сервер данные в запросе клиента. Эти данные
    могут быть использованы сервером для динамической генерации запрашиваемого
    документа, например для передачи входных данных для:
    
    - сетевых служб (например телеконференций)
    
 - программ с интерфейсом типа "коммандная строка"
    
 - выполнения операций в базах данных
    
  
    Например:
     
    POST / HTTP/1.0 
    User-Agent: Simple Web client by Eugen Kuleshov 
    Accept: */* 
    Content-type: application/x-www-form-urlencoded 
    Content-length: 16 
     
    test=20&test2=22
     
    Обратите внимание на атрибуты Content-type и Content-length
    они используются для того, чтобы указать серверу на тип кодирования тела
    запроса и дать информацию о длине тела. Подробнее вы можете почитать в
    соответствующем RFC (HTTP 1.0 - rfc1945
    или HTTP 1.1 - rfc2068). 
  
 
UP
 |