Протокол HTTP. Основные типы HTTP запросов.

HTTP - это …

HTTP (Hypertext Transfer Protocol) - протокол передачи гипертекста (веб-страниц), разработанный для осуществления коммуникаций между серверной и клиентской сторонами.

HTTP работает по типу “запрос-ответ” между клиентом и сервером.

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

Виды HTTP запросов

Два наиболее часто используемых видов HTTP запросов это: GET и POST.

  • GET - запрашивает данные с определенного ресурса (сайта)
  • POST - отправляет данные на сервер для последующей их обработки

GET запрос

Часть URL идущая после знака ? “говорит” серверу какие данные необходимо получить.

http://meliorem.ru?name1=value1&name2=value2

Особенности GET запроса

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

Никогда не используйте GET запрос для отправки паролей или других критически важных данных!

POST запрос

POST запрос часто применяют для отправки данных на сервер в веб-формах.

Пример POST запроса для отправки данных формы.

POST /test/sample_form.php HTTP/1.1
Host: meliorem.ru
name1=value1&name2=value2

Особенности POST запроса

  • не кэшируется
  • не может быть закладкой в браузере
  • не остаётся в истории браузера
  • нет ограничений по длине запроса

Сравнение GET и POST

В таблице ниже приводится сравнение между двумя типами запросов: GET и POST.

Функция GET POST
Кнопка назад/Перезагрузка Не влияет Данные будут отправлены повторно
Добавление в закладки Может быть добавлен в закладки браузера Не может быть добавлен в закладки браузера
Способ шифрования application/x-www-form-urlencoded application/x-www-form-urlencoded или multipart/form-data. Для бинарных данных используют последний
Хранение в истории браузера Данные остаются в истории браузера Не хранит данные
Ограничения на длину запроса Ограничен максимальной длинной URL (2048 символов) Нет ограничений
Ограничение на тип данных запроса Могут быть использованы только ASCII символы

Нет ограничений

Двоичные данные также могут быть использованы

Безопасность Небезопасный, из-за открытости данных в URL

Безопасный

В отличии от GET не хранит параметры в истории браузера или в журнале веб-сервера

Видимость данных Данные видны всем в URL Данные не отображаются в URL

Другие виды HTTP запросов

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

Вид запроса Описание
HEAD Тоже самое что GET, однако возвращает только HTTP заголовки и не возвращает тело документа
DELETE Удаляет определенный ресурс
PUT Загружает представление определенного URI
OPTIONS Возвращает список видов запросов, поддерживаемых веб-сервером
CONNECT Создает прозрачный TCP/IP туннель для передачи запросов