Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab3_http.doc
Скачиваний:
7
Добавлен:
13.08.2019
Размер:
108.03 Кб
Скачать

3.2.3. Тело http - запроса

Представляет собой дополнительные данные, посылаемые серверу. Тело сообщения включается в запрос, только если метод запроса подразумевает его наличие. Для спецификации HTTP/1.0 такими методами являются POST и PUT. В общем случае, на присутствие тела сообщения указывает присутствие таких заголовков, как например, Content-Length, в передаваемом запросе.

3.2.4. Примеры http-запросов

Пример запроса по методу GET:

GET http://193.172.33.2/users/info.htm HTTP /1.0

Connection: keep-alive

User-Agent: Mozilla/2.02 Cold (Win NT; I)

Accept: image /gif, image/x-x bitmap, image/jpeg, *.*

- необходимо получить ресурс (info.htm) расположенный на сервере по указанному адресу (http://193.172.33.2/users/).

Пример запроса по методу HEAD:

HEAD http://www.ora.com/common.htm HTTP/1.0

Connection: keep-alive

User-Agent: Netscape Navigator/3.0

Accept: image /gif, image/x-x bitmap, image/jpeg, *.*

- аналогичен методу GET, только в ответ на запрос метода HEAD сервер ничего не посылает в информационной части ответа. Метод HEAD запрашивает только информацию о ресурсе http://www.ora.com/common.htm .

Пример запроса по методу POST: позволяет послать на сервер данные в теле запроса

POST http://www.mmm.kiev.ua/env.pl HTTP/1.0

User-Agent: Mozilla/2.02 Cold (Win NT; I)

Accept: image /gif, image/x-x bitmap, image/jpeg, *.*

Content-type: application/x-www-form-urlencoded

Content-Length: 20

Month=sep&date=24

- сервер передает тело содержимого (Month=sep&date=24) в программу, заданную URL (http://www.mmm.kiev.ua/env.pl).

3.3. Структура ответов сервера

Каждый ответ сервера на запрос клиента состоит из следующих частей:

СТРОКА СОСТОЯНИЯ

[БЛОК ЗАГОЛОВКОВ]

[пустая строка]

[ТЕЛО РЕСУРСА (затребованных данных)]

Пример:

HTTP/1.0 200 Document follows

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

Server: NCSA/1.5.2

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

Content-type: text/html

Content-Length: 2482

(Тело документа)

3.3.1. Строка состояния

Синтаксис cтроки состояния

Версия HTTP <SP> код состояния <SP> фраза-описание <CRLF>

СТРОКА СОСТОЯНИЯ является Строкой-Статус и содержит:

- версию HTTP, которой данный сервер пользуется для передачи ответа;

- цифровой код состояния или статуса ответа на запрос;

- ассоциированное со статусом (кодом состояния) фраза-объяснение.

Все элементы строки разделены пробелами. Не разрешены символы <CR> и <LF>, за исключением завершающей последовательности <CRLF>.

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

Строка описание: представляет собой текст, фразу-объяснение кода состояния.

Статус-Код и пояснение к нему

Код состояния (Статус-Код) представляет собой трехзначный целочисленный цифровой код, идентифицирующий результат попытки интерпретации и удовлетворения запроса.

Фраза-Об'яснение, следующая за ним, предназначена для краткого текстового описания Статус-Кода. Статус-Код нацелен на то, чтобы его использовала машина, а Фраза-Об'яснение предназначена для человека. Клиент не обязан исследовать и выводить на экран Фразу-Об'яснение.

Первая цифра Статус-Кода предназначена для определения класса ответа. Последние две цифры не выполняют никакой категоризирующей роли.

Существует 5 значений для первой цифры Статус-Кода:

1. 1xx: Информационный - Не используется, но зарезервирован для использования в будущем

2. 2xх: Успех - Запрос был полностью получен, понят, и принят к обработке.

3. 3xx: Перенаправление - Клиенту следует предпринять дальнейшие действия для успешного выполнения запроса. Необходимое дополнительное действие иногда может быть выполнено клиентом без взаимодействия с пользователем, но настоятельно рекомендуется,

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

4. 4xx: Ошибка клиента - Запрос, содержащий неправильные синтаксические конструкции, не может быть успешно выполнен. Класс 4xx предназначен для описания тех случаев, когда ошибка была допущена со стороны клиента. Если клиент еще не завершил запрос, когда он получил ответ с Статус-Кодом- 4xx, он должен немедленно прекратить передачу данных серверу. Данный тип Статус-Кодов применим для любых методов, употребляющихся в запросе.

5. 5xx: Ошибка Сервера - Сервер не смог дать ответ на корректно поставленный запрос. В этих случаях 6. сервер либо знает, что он допустил ошибку, либо не способен обработать запрос. За исключением ответов на запросы HEAD, сервер посылает описание ошибочной ситуации и то, является ли это состояние временным или постоянным, в Содержание-Ответа. Данный тип Статус-Кодов применим для любых методов, употребляющихся в запросе.

Отдельные значения Статус-Кодов и соответствующие им Фразы-Об'яснения приведены ниже. Данные Фразы-Об'яснения только рекомендуются – они могут быть замещены любыми другими фразами, сохраняющими смысл и допускающимися протоколом.

Статус-Код = "200" ; OK |

"201" ; Created |

"202" ; Accepted |

"203" ; Provisional Information |

"204" ; No Content |

"300" ; Multiple Choices |

"301" ; Moved Permanently |

"302" ; Moved Temporarily |

"303" ; Method |

"304" ; Not Modified |

"400" ; Bad Request |

"401" ; Unauthorized |

"402" ; Payment Required |

"403" ; Forbidden |

"404" ; Not Found |

"405" ; Method Not Allowed |

"406" ; None Acceptable |

"407" ; Proxy Authentication Required |

"408" ; Request Timeout |

"409" ; Conflict |

"410" ; Gone |

"500" ; Internal Server Error |

"501" ; Not Implemented |

"502" ; Bad Gateway |

"503" ; Service Unavailable |

"504" ; Gateway Timeout |

От HTTP приложений не требуется понимание всех Статус-Кодов, хотя такое понимание, очевидно, желательно. Тем не менее, от приложений требуется способность распознавания классов Статус-Кодов (идентифицирующихся первой цифрой) и отношение ко всем Статус-Кодам статуса ответа, как если бы они были эквивалентны Статус-Коду x00.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]