Основы протокола HTTP: GET и POST — в чём разница?

Основное различие методов GET и POST состоит в способе передачи данных веб-формы обрабатывающему скрипт
Основное различие методов GET и POST состоит в способе передачи данных веб-формы обрабатывающему скрипту, а именно:Метод GET отправляет скрипту всю собранную информацию формы как часть URL:
http://www.komtet.ru/script.php?login=admin&name=komtet
  • Метод POST передает данные таким образом, что пользователь сайта уже не видит передаваемые скрипту данные:
    http://www.komtet.ru/script.php

Оба метода успешно передают необходимую информацию из веб-формы скрипту, поэтому при выборе того или иного метода, который будет наиболее подходить Вашему сайту, нужно учитывать следующие факторы:

  1. Принцип работы метода GET ограничивает объем передаваемой скрипту информации;
  2. Так как метод GET отправляет скрипту всю собранную информацию формы как часть URL (то есть в открытом виде), то это может пагубно повлиять на безопасность сайта;
  3. Страницу, сгенерированную методом GET, можно пометить закладкой (адрес страницы будет всегда уникальный), а страницу, сгенерированную метод POST – нельзя (адрес страницы остается неизменным, так как данные в URL не подставляются);
  4. Используя метод GET можно передавать данные не через веб-форму, а через URL страницы, введя необходимые значения через знак &:
    http://www.komtet.ru/script.php?login=admin&name=komtet
  5. Метод POST в отличие от метода GET позволяет передавать запросу файлы;
  6. При использовании метода GET существует риск того, что поисковый робот может выполнить тот или иной “открытый запрос”

Чтобы более наглядно отобразить разницу между POST и GET, привожу таблицу, в которой видно, по каким характеристикам они различаются.

ХарактеристикаPOSTGET
Способ передачиСтандартный потокПередача вместе с адресом
Максимальный объём8 КБ255 символов
КэшированиеНетДа

На основании этой характеристики можно делать вывод, когда нужно использовать POST, а когда GET. Например, если пользователь хочет сохранить сгенерированную страницу в закладки. То генерация должна происходить путём GET-запроса, иначе добавить страницу в закладки не получится. Другой пример: при передаче логина и пароля нельзя ставить метод GET, так как он основан на передаче данных через адресную строку. Иначе после нажатия кнопки “Submit“, в адресной строке появится что-то наподобии этого: “http://test.ru/login.php?log=User&pass=123“, – и пароль может увидеть, кто угодно, чего, разумеется, допускать нельзя. Поэтому здесь надо использовать метод POST.

Также не забывайте, что размер данных, которые можно передать методом POST, на порядок больше, чем при передаче методом GET. В общем, анализируйте эту таблицу и делайте вывод: каким методом передачи данных нужно пользоваться в конкретном случае. От себя добавлю, что в 80% случаев надо использоватьPOST, но и не забывайте, что это далеко не 100%.

Please follow and like us:

Leave a Comment