Метод GET или метод POST. Что лучше?

internet1Недавно задумался что лучше и вот соображения на эту тему. Протокол HTTP, известный каждому благодаря интернету, имеет два самых часто используемых вида запросов и POST. В большинстве случаев применимы оба метода и оба будут хорошо работать. Однако бывают ситуации, когда использование того или иного метода дает определенные преимущества. Рассмотрим несколько ситуаций, когда есть смысл предпочесть метод GET или POST.

Для начала, вспомним как работает HTTP протокол. Допустим, вы хотите посетить какой-то сайт.
1. Ваш браузер делает запрос к серверу, на котором находится интересуемый сайт.
2. Сервер анализирует запрос, что-то делает, и отправляет ответ.

Да, это сверхупрощенная схема, но по сути именно так все и работает.

Именно в первом шаге ваш браузер решает, какой вид запроса использоть, GET или POST.

Так в чем же разница?

GET имеет формат вида: GET http://www.site.com/index.html HTTP/1.1
Данная комманда говорит серверу “Дай мне файл index.html, который находится в директории (на сайте) http://www.site.com/“.

Все, что вы вводите в адрессной строке браузера “переводится” в GET запросы.

В GET запросе также можно указывать параметры, которые нужно передать файлу. Именно здесь и выходит на сцену POST.

В GET строка запроса выглядит так: ?param=value&boom=345&check=1

То есть, мы можем не только запрашивать какие-то конкретные статические файлы, но и передавать динамическим файлам какие-то значения, именно через строку запроса: GET http://www.site.com/index.php?param=value&boom=345&check=1 HTTP/1.1

Итак, все что мы видим в адрессной строке и любые ссылки, на которые можно нажать или скопировать — все они используют GET. Этот вид запроса позволяет вам посылать информацию на сервер, делать с ней что-то на сервере, и возвращать результат.

Теперь немного о POST.
Запросы в формате POST имеею ту же функциональнасть что и GET, но есть разница в формате.

GET отправляет всю информацию в заголовке запроса, длинна которого ограничена. Если вам нужно отправить какое-то слово на сервер — не проблема, оно будет всего несколько букв. Но что делать, если нужно отправить объемный тескт с 2000—3000 символов? Будут проблемы.

POST отправляет информацию в теле запроса, который не имеет максимального размера. Вы можете отправлять огромные тексты, файлы, и все будет нормально. Именно поэтому этот метод ипользуется при загрузке изображений.

POST может “симулировать” GET запрос, можно указывать параметры как и в заголовке запроса, так и в теле. В HTML формах выможете указать как отправлять информацию на сервер при помощи аттрибута method:

<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span> <span style="color: #000066;">method</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"get"</span>&gt;</span>
или
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span> <span style="color: #000066;">method</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"post"</span>&gt;</span>

По умолчанию всегда используется GET, и не только в формах.

Так что же лучше? Что выбрать?
Однозначного ответа нет, все зависит от ситуации и желаемого результата.

Плюсы GET
1. Страницу всегда можно сохранить в закладках (СЕО-дружелюбен).
2. Он быстрее POST, так как вся информация находится в заголовках.
3. Информация, посылаемая на сервер, всегда видима (в адрессной строке).

Минусы GET
1. Иноформация, посылаемая на сервер, всегда видима (в адрессной строке).
2. Объем информации, которую можно отправить, ограничен.

Плюсы POST
1. Можно отправить много информации на сервер, объем неограничен.
2. Отправляемая информация не показывается в адрессной строке. Удобно, если нужны красивые URL.
Но ее все равно можно легко увидеть. Не используйте POST как способ защиты сайта!

Минусы POST
1. Медленнее, чем GET, так как анализируются заголовки и тело запроса.
2. Страницы, сгенерированные как результат запроса POST, нельзя добавить в закладки (СЕО-недружелюбен).

Ипользуйте POST, когда на сервер нужно отправить что-то для сохранения. Например, данные нового зарегистрированного пользователе, или какой-то файл.

Используйте GET, если вам нужно что-то от сервера, но сервер ничего не будет сохранять, или объем отправляемов вами информации легко помещается адрессной строке. Например, страница поиска на вашем сайте будет более удобное, если использовать GET, так как на сервер отправляется всего лишь какая-то фраза или слово, и сервер просто отправляет кучу информации в ответ. К тому же, страницу результатов можно будет добавить в закладки.

Запись навигация

Top