Что такое 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-туннель. |