Протокол http
HTTP (Hyper Text Transfer Protocol)
В 1972 году было предложено совместить гипертекст с Интернетом.
Рассмотрим структуры http запроса:
Method Request-URL HTTP-Version | ||
[Generate Header] | ||
Date | ||
Pragma | ||
[Request Header] | ||
Authorization | ||
From: | ||
If-Modified | ||
Refer: | ||
Accept: | ||
User-Agent: | ||
[Entity-Header] | ||
Allow: | ||
Content-Encoding | ||
Content-Type | ||
Content-Length | ||
Exiris: | ||
Last-Modified | ||
[Entity-Body] |
Каждая страница в протоколе определяется по унифицированному указателю ресурсов URL. URL имеет следующую структуру:
<схема://><доменное имя> <Номер порта>:/<путь к файлу>?<параметры>
Сема: определяет тип ресурса (http:// ftp:// smtp:// txt://)
Доменное имя: все знают J
Путь к файлу: здесь не допускается пробел, вместо него используется &.
Метод содержит идентификатор метода обращения к http серверу, метод определяет состав и структуру остальных заголовков запроса.
Метод Get – запрашивает инф-цию о ресурсе, расположенному о заданному URL. Данный метод не имеет тела запроса. Все параметры передаются в первой строке.
telnet в командной строке и доменное имя, например google.ru Get/ (на экзамен)
Метод Head – аналогичен Get за исключением того, что сервер возвращает только заголовок ответа. Этод метод используется для тестирования доступа к ресурсу.
Метод Put – используется, когда клиент желает сохранить исходные данные на сервере, этот метод запрещен для большинства виртуальных каталогов.
Метод Post – используется для передачи клиентом на сервер запроса какого-либо ресурса, отличие от предыдущего – параметры передаются в теле запроса. При доступе к серверным web приложениям этот метод предпочтительней предыдущего, т.к. снимает длину передаваемых параметров.
Метод Delete – используется для удаления ресурса, определяемого URL, обычно все виртуальные каталоги запрещают этот метод.
HTTP-Version – версия протокола, записывается в виде HTTP/1.1
Рассмотрим поля общего заголовка General Header. Эти поля используются, как в заголовке запроса, так и в заголовке ответа.
Date – Определяет время построения запроса
Pragma – Используется для установки спец директив для участников запроса (no-cash – не кэшировать запрос и ответ).
GET/main.doc.html HTTP/1.C
Date: Wed, 21, Nov 2012 05:10:30 GMT
Pragma: no-cash
Request Header – заголовок запроса
Authorization – авторизация, содержит аутотентификационные данные пользователя, обычно запросы этого поля не кэшируются.
From – Может содержать e-mail отправителя. Оычно это поле используется сервером для формирования журнала заходов на сервер и рассылки празднцичных поздравлений наиболее активным пользователям.
If-Modified-Since – используется полем Get, если запрашиваемый ресурс не изменялся с момента, указанного в этом параметре, то данный ресурс не возвращается, возвращается только его заголовок.
Refer – содержит URL предшествующего ресурса, этот параметр может использовать администратор сервера для выявления попыток атаки.
Accept – Появилось с версии http/4.0 и предписывает отвечающему серверу использовать только указанные форматы данных.
Accept: text/html
Accept: image/gif
User-Agent – содержит информацию о ПО клиента.
Entity-Header – содержит информацию о структуре и формате тела запроса.
Allow – содержит список методов поддерживаемых ресурсов (get, post, head)
Content-Encoding – содержит идентификатор дополнительной кодировки ресурса, например,
MIME
x-qzip
Content-Type – содержит тип ресурса и таблицу кодировки ресурса.
Text/html;charset=koi-8
Content-Length – длина тела сообщения
Expires – используется в механизме кэширования для удаления устаревших ресурсов. Содержит дату срока окончания ресурса.
Last-Modified – содержит дату и время последнего изменения ресурса.