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-запроса:
Некоторые другие замечания о GET-запросах:
- GET-запросы могут кэшироваться
- GET-запросы остаются в истории браузера
- GET-запросы можно добавлять в закладки
- Запросы GET не следует использовать при обработке конфиденциальных данных
- GET-запросы имеют ограничения по длине
- GET-запросы следует использовать только для получения данных
Метод POST
Обратите внимание, что строка запроса (пары имя/значение) отправляется в теле HTTP-сообщения POST-запроса:
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. |