Методы HTTP запроса

Что такое HTTP

HTTP расшифровывается как HyperText Transfer Protocol, «протокол передачи гипертекста». Изначально этот протокол использовался для передачи гипертекстовых документов в формате HTML. Сегодня он используется для передачи произвольных данных.

В основе HTTP - клиент-серверная структура передачи данных․ Клиент формирует запрос (request) и отправляет на сервер; на сервере запрос обрабатывается, формируется ответ (response) и передается клиенту.

HTTP не шифрует передаваемую информацию. Для защиты передаваемых данных используется расширение HTTPS (Hyper Text Transfer Protocol Secure), которое “упаковывает” передаваемые данные в криптографический протокол SSL или TLS.

Структура HTTP запроса

HTTP запрос состоит из трех основных частей: строка запроса (request line), заголовок (message header) и тело сообщения (entity body). Тело сообщения не является обязательным параметром. Между заголовком и телом есть пустая разделительная строка.

В строке запроса указывается метод передачи, версия протокола HTTP и URL, к которому должен обратиться сервер. Заголовки содержат тело сообщения, передаваемые параметры и другие сведения. В теле сообщения могут находиться передаваемые в запросе данные.

HTTP методы

Для того, чтобы указать серверу на то, какое действие мы хотим произвести с ресурсом, используется тип HTTP-запроса, который также называется HTTP метод. Существует несколько HTTP методов, которые описывают действия с ресурсами. Наиболее часто используемыми являются GET и POST.

Метод GET

Метод GET запрашивает информацию из указанного источника и не влияет на его содержимое. Запрос доступен для кеширования данных и добавления в закладки. Длина запроса ограничена (макс. длина URL - 2048).

Примечание: Строка запроса (имя/значение) отправляется в URL

/login-check.php?argument1=value1&argument2=value2

Синтакс кода

<form  method="get">
     First name: <input type="text" placeholder="Your name"><br/>
     <input type="submit" value="Submit">
</form>

Метод POST

Метод POST используется для отправки данных, что может оказывать влияние на содержимое ресурса. В отличие от метода GET запросы POST не могут быть кешированы, они не остаются в истории браузера и их нельзя добавить в закладки. Запросы POST не ограничиваются в объеме.

Примечание: Отправляемые данные содержатся в теле запроса.

POST /login-check.php HTTP/1.1
Host: w3docs.com
argument1=value1&argument2=value2

Синтакс кода

<form  method="post">
     First name: <input type="text" placeholder="Your name"><br/>
     <input type="submit" value="Submit">
</form>

Сравнение методов GET и POST

Название GET POST
Кнопка “назад” / Перезагрузка Безопасно Данные будут отправлены вновь. Браузер должен предупредить, что произойдет повторная отправка данных.
Добавление в закладки Да Нет
Кеширование Да Нет
Тип кодировки application/x-www-form-urlencoded application/x-www-form-urlencoded or multipart/form-data
История Остается в истории браузера. Не остается в истории браузера.
Ограничение в длине запроса Есть ограничения. Так как данные передаются в URL, то запрос должен ограничиваться 2048 символами (максимальная длина URL). Нет ограничений.
Ограничение по типу данных Допускается использование только символов ASCII. Не имеет ограничение. Допускаются также двоичные данные.
Безопасность Менее безопасный метод передачи, поскольку передаваемые в URL данные видны пользователю. POST более безопасный, так как данные не отображаются напрямую в web-клиенте пользователя, кроме того запрос не кешируется и не сохраняется в истории.
Видимость Данные в URL визуально доступны всем. Данные не видны в URL.

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

Кроме методов GET и POST methods используются другие методы, которые описывают действия с ресурсами.

Метод Описание
HEAD Аналогичен методу GET, однако в ответе сервера содержится только заголовок, без тела. Обычно применяется для того, чтобы проверить, существует ли ресурс по указанному адресу, а также не изменился ли он с момента последнего обращения.
PUT Загружает содержимое запроса на указанный в запросе URI. Если по заданному URI ресурса нет, то сервер создает его, возвращая статус 201 (Created).
DELETE Удаляет указанный ресурс.
OPTIONS Используется для описания параметров коммуникации между клиентом и сервером.
CONNECT Преобразует соединение запроса в прозрачный TCP/IP-туннель.

Таблица кодов состояния HTTP

Практикуйте свои знания

Какие методы используются в HTTP-запросах?
Считаете ли это полезным?