html.okpython.net
HTML и CSS для начинающих

HTML :: Методы передачи данных GET и POST

В формах для отправки данных на сервер применяются два метода HTTP-запросов: GET и POST, каждый из которых имеет свои преимущества и недостатки и применяется в зависимости от конкретной ситуации.

Метод запроса GET является открытым методом передачи данных, т.к. они добавляются непосредственно в URL-адрес после знака вопроса ? и видны в адресной строке браузера всем пользователям. Происходит это следующим образом: данные формы, которые представляют собой пары «имя=значение», объединяются в одну строку, соединяясь знаком амперсанда &, и присоединяются к URL-адресу обработчика формы, указанному в атрибуте action открывающего тега элемента «form»; при этом «имя» в паре представляет собой значение атрибута name соответствующего элемента формы, а «значение» – значение атрибута value данного элемента, которое есть не что иное, как введенные пользователем данные. Так после отправки данных формы, показанной в примере ранее, в адресной строке в зависимости от браузера все пользователи смогут увидеть отправленные данные в виде: http://localhost/test/php/registration.php?first_name=Иван&last_name=Иванов (см. рисунок №1) или http://localhost/test/php/registration.php?first_name=%D0%98%D0%B2%D0%B0%D0%BD&last_name=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2 (для браузера IE). Во втором случае вместо русских букв использованы их цифровые коды «utf-8» со знаком %. Дело в том, что данные отправляемые методом GET, кодируются стандартным способом «urlencoded», который предусматривает замену таким образом всех символов, кроме английских букв, цифр и знаков - , _ , . , ! , ~ , * , ' , ( , ) . Если внимательно посмотреть на представленные адреса, то легко догадаться, что, например, буква «И» кодируется, как «%D0%98», а буква «в» кодируется, как «%D0%B2». И хотя некоторые браузеры с целью улучшения визуального восприятия показывают адреса, где отображаются русские буквы, отправляется запрос все равно в закодированном виде.

Рис. №1. Пример адреса, содержащего данные GET-запроса

Отправка HTTP-запросов методом GET довольна проста, а сам запрос отличается высокой скоростью выполнения. Однако он не является конфиденциальным и ограничен объемом передаваемых данных, который не должен превышать 4 Кб. Поэтому GET-запросы используются для передачи небольших объемов неконфиденциальных текстовых данных, например, при обмене информацией между скриптами, разположенными в разных файлах на сервере. Кроме того, запросы поисковых систем и форм поиска по сайту также отправляются именно методом GET.

Поскольку формы чаще всего используются для получения персональных данных пользователей или же передачи файлов, то основным методом отправки данных в них является метод POST. Он позволяет передавать данные значительных размеров, а их содержание можно узнать только используя специальные методы. Однако структура самих POST-запросов несколько сложнее, чем у GET-запросов и требует более глубоких знаний. Поэтому на данный момент мы ограничимся лишь упоминанием о нем, тем более, что для применения в формах, нам достаточно знать лишь область его применения. Что касается более детального рассмотрения обоих методов, то мы сделаем это позже в ходе изучения языков JavaScript и PHP.

Быстрый переход к другим страницам