HTTP Методы: GET vs POST


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


Что такое HTTP?

Протокол передачи гипертекста (HTTP) предназначен для обеспечения связи между клиентами и серверами.

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

Веб-браузер может быть клиентом, а веб-приложение на компьютере также может выступать в роли сервера.

Пример: клиент (браузер) отправляет HTTP-запрос серверу; сервер возвращает клиенту ответ. Ответ содержит информацию о состоянии запроса и также может содержать запрошенное содержимое.


Два метода HTTP-запросов: GET и POST

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

  • GET- Запросить данные из указанного ресурса.
  • POST- Отправить данные для обработки в указанный ресурс.

Параметры GET обычно отображаются в URL, тогда как POST, отправленный через форму, не показывает их в URL, что делает POST более скрытым:


Метод GET

Обратите внимание, что строка запроса (пары имя/значение) отправляется в URL GET-запроса:

/test/demo_form.php?name1=value1&name2=value2

Некоторые другие замечания о GET-запросах:

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

Метод POST

Обратите внимание, что строка запроса (пары имя/значение) отправляется в теле HTTP-сообщения POST-запроса:

POST /test/demo_form.php HTTP/1.1
Host: example.com
name1=value1&name2=value2

Некоторые другие замечания о POST-запросах:

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

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

В следующей таблице сравниваются два метода HTTP: GET и POST.

  GET POST
Кнопка «Назад»/Обновить Безвредный Данные будут отправлены повторно (браузер должен сообщить пользователю, что данные будут отправлены повторно).
Bookmark Можно добавить в закладки Нельзя добавить в закладки
Кэширование Можно кэшировать Нельзя кэшировать
Тип кодирования application/x-www-form-urlencoded application/x-www-form-urlencoded или multipart/form-data. Для двоичных данных используйте multipart-кодирование.
История Параметры остаются в истории браузера. Параметры не сохраняются в истории браузера.
Ограничения на длину данных Да, есть ограничение. При отправке данных метод GET добавляет данные в URL; длина URL ограничена (максимальная длина URL — 2048 символов). Без ограничений.
Ограничения на типы данных Разрешены только символы ASCII. Без ограничений. Двоичные данные также разрешены.
Безопасность По сравнению с POST, GET менее безопасен, поскольку отправляемые данные являются частью URL.

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


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

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

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