Основы HTTP протокола онлайн урок.


Аббревиатура HTTP расшифровывается как Hyper Text Transfer Protocol – протокол передачи гипертекста. В первую очередь, протокол является алгоритмом или же правилом. Таким образом можно отметить, что HTTP это система правил передачи данных через Интернет. Все довольно просто. Давайте рассмотрим это более детально.

Гипертекст означает исходный код HTML страниц, которая заключает в себя текст, HTML разметку и гиперссылки. Теперь мы можем заметить, что основная цель HTTP это передача исходного кода веб-страниц. По факту, это передача текстовых файлов. Помимо этого, передача файлов других типов также возможна.

Как Вы уже знаете из предыдущих лекций, веб-приложения используют архитектуру “клиент-сервер” для своей работы. HTTP протокол – это один из протоколов, который используется для отправки запросов от клиента к серверу и получения соответствующего ответа. Давайте начнем с отправки запроса серверу.

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

1. Строка запроса с указанным методом и версией HTTP.
2. Заголовки запросов и также их значение.
3. Тело запроса

Начнем с первого пункта - строка запроса с указанным методом и версией HTTP. Ее шаблон имеет следующий вид:

<Method> <URI> HTTP / <version>


Здесь <Method> означает метод передачи данных. Он определяет основные свойства запроса и может быть одним из последующих значений: OPTIONS, GET, HEAD, POST, PUT, PATCH, DELETE, TRACE, CONNECT.

Наиболее распространенные значения это GET и POST. Мы рассмотрим их более детально.

<URI> это универсальный код ресурса. Он может быть как и URL (Uniform Resource Locator - универсальный адрес размещения) так и URN (Uniform Resource Name - универсальный номер ресурса). Например http://google.com это URL, поскольку он вмещает в себя информацию о том, где расположен ресурс. А isbn:1137214941 - это URN, поскольку он имеет лишь идентификатор номера. В большинстве случаев вместо <URI> можно вписать URL.

<version> это версия HTTP протокола. К примеру, самая новейшая это 1.1.
Например:

GET http://site-example.com/index.html HTTP/1.1


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

Далее мы рассмотрим заголовки запросов. Это дополнительная информация касательно запросов. Например,
Cookie: name=Mark, email=mark@site.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0

Эти заголовки дают нам информацию о системных параметрах и версиях браузеров. Также они обеспечивают запросы с информацией о файлах cookie c именем , а также email адресом.

Далее третий пункт. Тело запроса должно включать основную информацию запроса. Это не обязательная часть запроса, особенно в случае со значением GET. Мы сравним то, как методы GET и POST используются в запросах.

Итак, что же представляют собой методы GET и POST в запросах? Само значение их названий определяет то, какие функции они исполняют. Если Вы хотите получить что-то – используйте GET. Если Вы хотите, чтобы система получила что-то новое от Вас - используйте POST. Давайте рассмотрим это более подробно.

Методы GET vs POST
Предполагается, что метод GET получает данные с сервера. Дополнительные параметры должны указываться в строке запроса

GET http://site.com/search.html?type=Hatchback&year=2005 HTTP/1.1

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

Предполагается, что метод POST отправляет данные серверу для того, чтобы их обработать и внести изменения в систему. К примеру, создать новое сообщение в блоге. В данном случае параметры не включены в строку запроса и они расположены в теле запроса. Это основные различия между методами GET и POST.

Это значит, что при использовании метода POST, ограничений относительно количества данных нет. Но при этом пользователь не может сделать закладкой запрос POST. Если же мы попробуем сделать его закладкой, сохранится лишь URL, но не параметры.

Примеры:
GET /wiki/HTTP HTTP/1.1
Host: uk.wikipedia.org
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7) Gecko/20070914
Firefox/2.0.0.7
Connection: close

POST /test/index.html HTTP/1.1
Host: mysite.com
author=Mike&message=Hello

Давайте рассмотрим ответ сервера протокола HTTP. Ответ сервера через HTTP протокол включает следующее:
1. HTTP/
2. Заголовки ответа
3. Тело ответа

Здесь код состояния и описание кода является основной информацией о том, как запрос был обработан. Наиболее популярные коды состояния и описания это:

200 OK ,
301 Moved Permanently,
404 Not Found,
403 Forbidden,
500 Internal server Error

Основная идея кода зависит от того, с какой цифры он начинается:
1xx -дополнительная информация,
2xx – успешно,
3xx – переадресация,
4xx –ошибка со стороны клиента,
5xx – ошибка сервера

Части тела обычно состоят из исходного кода, запрошенного веб-ресурсом.
Например:
HTTP/1.0 200 OK
Server: Apache
Content-Language: uk
Content-Type: text/html; charset=utf-8
Content-Length: 1234