что быстрее post или get
Руководство по выбору между GET и POST
К сожалению на практике встречается множество несостыковок в использовании GET вместо POST и наоборот. Оба HTTP метода могут приводить к одинаковым результатам, но их некорректное использование может привести к неожиданным и потенциально опасным последствиям.
Поэтому, что-бы быть уверенным в том, что мы делаем все правильно, я представляю Вам руководство по выбору между GET и POST.
Давайте вспомним, что в строках запросов, пара переменная/значение, передается в GET через вот такой URL запрос:
а в POST запросе она передается в теле заголовка:
Основы: GET против POST
Правило #1: Используйте GET для безопасных действий и POST для небезопасных
RFC указывает Интернет браузерам на то, что пользователей необходимо предупреждать о повторном использовании POST запроса, потому что это действие потенциально небезопасно (к примеру оформление онлайн оплаты).
Однако, пока браузер соблюдает это требование RFC, может поясним почему POST должен использоваться для небезопасных действий, и почему мы не должны использовать POST для безопасных?
Просто примите к сведению то, что GET запросы используются чаще:
Примечание: Если Вам необходимо извлекать лучшее из обоих методов, небезопасное действие можно превратить в безопасное сделав его идемпотентным и таким образом обезопаситься от возможной проблемы многочисленных повторений запросов. Вы назначаете каждому запросу свой уникальный ID и проверяете его на сервере, был ли запрос с таким ID обработан ранее. На самом деле все небезопасные действия должны быть идемпотентными, так как пользователя не остановят никакие предупреждения.
GET против POST: копаем глубже
Правило #2: Используйте POST для операций с важной информацией
Так как в GET запросах строка запроса находится в открытом виде, мы должны заботиться о своей безопасности и о том, что пользователи будут работать с важными данными, такими как пароли или номера кредитных карт:
1. Наши пользователи могут и не догадываться об этом, передавая важные данные через URL другим лицам или когда история серфинга в их браузере может быть просмотрена другими пользователями этого компьютера (хотя это может и не сработать при работе с AJAX ориентированными сервисами).
2. Мы сами нарушаем закон о частной информации, сохраняя, к примеру, в логах своего сервера номера CV2s с кредитных карт пользователей.
Правило #3: Используйте POST для операций с большими данными
Несмотря на то, что RFC не описывает такой параметр, как длина URL, Internet Explorer упорно придерживается мнения, что максимальная длина URL не может превышать 2,048 символов, это накладывает некоторые ограничения на использование GET.
Правило #4: Используйте GET в AJAX приложениях
Когда используется XMLHttpRequest, браузеры реализуют POST как двухпроходный процесс (сперва посылают заголовок, а затем данные). Это означает, что GET запросы более отзывчивые, что так необходимо для хорошего AJAX окружения.
Итоги
Хотя правила обычно существуют для убедительных причин, хорошо бы знать то, что за ними скрывается. Я сам ненавижу правила, у которых нет объяснений и надеюсь, что все вышесказанное поможет Вам уяснить правила различий GET против POST.
Выбирая между этими двумя методами необходимо иметь некоторое чутье и я думаю следующая схема поможет Вам в этом выборе:
Метод GET или метод POST. Что лучше?
Недавно задумался что лучше и вот соображения на эту тему. Протокол HTTP, известный каждому благодаря интернету, имеет два самых часто используемых вида запросов GET и 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 http://www.site.com/index.php?param=value&boom=345&check=1 HTTP/1.1
Итак, все что мы видим в адрессной строке и любые ссылки, на которые можно нажать или скопировать — все они используют GET. Этот вид запроса позволяет вам посылать информацию на сервер, делать с ней что-то на сервере, и возвращать результат.
Теперь немного о POST.
Запросы в формате POST имеею ту же функциональнасть что и GET, но есть разница в формате.
POST может “симулировать” GET запрос, можно указывать параметры как и в заголовке запроса, так и в теле. В HTML формах выможете указать как отправлять информацию на сервер при помощи аттрибута method:
По умолчанию всегда используется GET, и не только в формах.
Так что же лучше? Что выбрать?
Однозначного ответа нет, все зависит от ситуации и желаемого результата.
Плюсы GET
1. Страницу всегда можно сохранить в закладках (СЕО-дружелюбен).
2. Он быстрее POST, так как вся информация находится в заголовках.
3. Информация, посылаемая на сервер, всегда видима (в адрессной строке).
Минусы GET
1. Иноформация, посылаемая на сервер, всегда видима (в адрессной строке).
2. Объем информации, которую можно отправить, ограничен.
Плюсы POST
1. Можно отправить много информации на сервер, объем неограничен.
2. Отправляемая информация не показывается в адрессной строке. Удобно, если нужны красивые URL.
Но ее все равно можно легко увидеть. Не используйте POST как способ защиты сайта!
Минусы POST
1. Медленнее, чем GET, так как анализируются заголовки и тело запроса.
2. Страницы, сгенерированные как результат запроса POST, нельзя добавить в закладки (СЕО-недружелюбен).
Ипользуйте POST, когда на сервер нужно отправить что-то для сохранения. Например, данные нового зарегистрированного пользователе, или какой-то файл.
Используйте GET, если вам нужно что-то от сервера, но сервер ничего не будет сохранять, или объем отправляемов вами информации легко помещается адрессной строке. Например, страница поиска на вашем сайте будет более удобное, если использовать GET, так как на сервер отправляется всего лишь какая-то фраза или слово, и сервер просто отправляет кучу информации в ответ. К тому же, страницу результатов можно будет добавить в закладки.
Post и Get запросы, какая между ними разница и что лучше и для каких целей?
Средний 1 комментарий
Общего между ними то что они работают одинаково. Разницы между ними технически никакой. А вот идеологические различия есть.
Я расскажу о них в контексте PHP. Прошу заметить что протокол HTTP к PHP имеет косвенное отношение потому что он создавался для обмена html страницами а PHP просто расширяет возможности и того и другого.
GET запрос используется чтобы получить данные а POST чтобы отправить. (Напоминаю что технически они работают одинаково).
Чаще всего пост запрос используется в формах (для отправки данных).
Например у нас есть форма для входа 2 поля логин и пароль.
Представим что мы используем GET метод. Тогда при отправке формы мы перейдем на следующий адрес /login.php?login=Андрей&password=123 согласитесь что так передавать такую информацию совсем не безопасно. Любой может открыть ваш браузер и начиная вводить адрес сайта он из истории может увидеть ваши пароли и логины.
А вот если бы мы указали методом POST то мы бы получили следующий запрос:
POST /login.php (login=Андрей&password=123) то что в скобочках было бы скрыто и никак не сохранено в браузере.
Теперь другая ситуация например форма поиска. Мы вводим текст и получаем страницу с результатами. Вот тут уместнее GET форма. потому что нам было бы удобно сразу иметь ссылку на результат поиска, то есть добавить в строку запроса можно выразится «Публичные параметры», которыми можно поделиться. И как результат в строке браузера будет конкретная ссылка на текущую страницу. Мы можем ее скопировать, и разместить где-нибудь, или например скинуть другу. И получить при переходе одну и ту же страницу. А не просить других людей зайти на сайт и в поиск вбить определенную фразу чтобы получить необходимую страницу.
Почему метод GET быстрее, чем POST в HTTP?
Я просто новичок в веб-программировании и просто любопытно узнать abt Get и Post методы отправки данных с одной страницы на другую страницу.
9 ответов
дело не в скорости. Есть много случаев, когда POST более применим. Например, поисковые системы индексируют URL-адреса GET, а браузеры могут добавлять их в закладки и отображать в истории. В результате, если вы предпринимаете такие действия, как изменение БД на основе запроса GET, это может быть вредным, так как некоторые боты могут также пересекать URL.
другой случай может быть проблемой безопасности. Если вы отправляете учетные данные с помощью GET, они будут перечислены в истории браузера и журнале сервера файлы.
еще одна вещь о http post-это может быть 2 вызова, когда HTTP-заголовок Это. Первый браузер отправляет заголовки HTTP post и ответы сервера с «HTTP 100 Continue». Когда браузер получает это, он отправляет фактическое тело.
Я думаю, что это ответ, который искал автор.
существует несколько неправильных представлений о GET и POST в HTTP. Существует одно основное различие: GET должен быть идемпотентным, а POST-нет. Это значит, что никаких побочных эффектов не будет.e я могу отправить GET в веб-приложение столько раз, сколько хочу (думаю, нажав Ctrl+R или F5 много раз), и запросы будут «безопасными»
Я не могу сделать это с POST, сообщение может изменить данные на сервере. Например, если я заказываю товар в интернете товар должен быть добавлено с сообщением, потому что состояние изменено на сервере, количество добавленных элементов увеличилось на 1. Если я сделал это с сообщением и нажал обновить в браузере, браузер предупреждает меня, если я сделаю это с помощью GET, браузер просто отправит запрос.
на сервере GET vs POST-это чистое соглашение, т. е. я как разработчик должен убедиться, что я кодирую сообщение на сервере до не повторить вызов. Существуют различные способы сделать это, но это другое вопрос.
чтобы фактически ответить на вопрос, если я использую GET или POST для выполнения той же задачи, нет разницы в производительности.
вы можете прочитать RFC (http://www.w3.org/Protocols/rfc2616/rfc2616.html) для получения более подробной информации.
глядя на протокол http, POST или GET должны быть одинаково легко и быстро разобрать. Я бы сказал, что нет никакой разницы в производительности.
взгляните на необработанные заголовки HTTP
http GET
http POST
С моей точки зрения, производительность не должна учитываться при сравнении GET и POST.
вы должны думать о GET как «место, чтобы пойти», и опубликовать как»что-то делать». Например, форма поиска должна быть отправлена с помощью GET, потому что страница результатов поиска является «местом», и пользователь захочет добавить ее в закладки или получить ее из своей истории позже. Если вы отправляете форму с помощью POST, пользователь может только воссоздать страницу, отправив форму снова. С другой стороны, если бы вы должны были выполнить такое действие, как нажатие кнопки Удалить, вы бы не захотели отправлять это с GET, поскольку действие будет повторяться всякий раз, когда пользователь возвращается к URL-адресу.
просто мои несколько центов с 2016 года.
Я создаю простую систему сообщений. Сначала я использовал POST для получения новых предупреждений. В jQuery у меня было:
Так GET может быть в два раза быстрее, чем POST. Конечно не всегда, но для небольших объемов данных, которые я получаю те же результаты.
GET и немного быстрее потому что значения отправляются в заголовок в отличие от в должности значения отправляются в запросе тело, в формате, указанном типом содержимого.
обычно тип содержимого application / x-www-form-urlencoded, поэтому тело запроса использует тот же формат, что и строка запроса:
параметр=значение&и=другой При использовании загрузки файла в форме используется multipart / form-кодировка данных вместо этого, которая имеет другой формат. Все гораздо сложнее.
Я согласен с другими ответами, но не упоминалось, что запросы GET могут быть кэшированы, а запросы POST никогда не кэшируются. Я думаю, что это основная причина того, что некоторые запросы GET выполняются быстрее. (Из-грубо это означает, что иногда запрос фактически не отправляется. Следовательно, на самом деле это не запрос GET, который быстрее, но кэш Вашего браузера.)
POST будет расти ваши заголовки больше, просто делая его больше, но разница должна быть незначительной, поэтому я не вижу, почему это должно быть проблемой.
просто имейте в виду, что правильный способ говорить HTTP-использовать GET только для действий и POST для данных. Вам не нужно, но вы также не хотите иметь случай, когда боты Google могут, например, вставлять, удалять или манипулировать данными, которые предназначены только для человека, просто потому, что он следует по ссылкам находки.
Методы GET и POST. Использование и отличия
HTTP методы GET и POST используются для отправки данных на сервер.
Чаще всего методы используются в HTML формах, гиперссылках и AJAX запросах.
POST и GET запросы можно отправить на сервер с помощью любого программного обеспечения, работающего с протоколом HTTP.
Обработка запросов может отличаться в зависимости от типа сервера.
Какой метод использовать GET или POST, чем отличаются методы
Основное отличие метода GET от POST в способе передачи данных.
Запрос GET передает данные в URL в виде пар «имя-значение» (другими словами, через ссылку), а запрос POST передает данные в теле запроса (подробно показано в примерах ниже). Это различие определяет свойства методов и ситуации, подходящие для использования того или иного HTTP метода.
Например, можно использовать метод GET в HTML форме фильтра товаров: когда нужно, исходя из данных введенных пользователем, переправить его на страницу с отфильтрованными товарами, соответствующими его выбору.
HTTP метод POST поддерживает тип кодирования данных multipart/form-data, что позволяет передавать файлы.
Также следует заметить, что методы можно комбинировать. То есть, при необходимости вы можете отправить POST запрос на URL, имеющий GET параметры.
В каких случаях использовать POST и когда нужно использовать GET
В таблице ниже показаны распространенные варианты использования HTTP запросов с объяснением в чем разница между GET и POST запросами в конкретной ситуации.
Ситуация | GET | POST |
---|---|---|
Фильтр товаров | ||
AJAX запросы | Используются оба метода. Выбор зависит от контекста. Принципы выбора метода такие же, как и для HTML форм. |
Сравнительная таблица HTTP методов GET и POST
В таблице ниже приведены основные свойства и отличия GET и POST методов.
Свойство | GET | POST |
---|---|---|
Способ передачи данных | Через URL | В теле HTTP запроса |
Защита данных | ||
Кэширование | Страница с параметрами может быть кэширована | Страница с параметрами не может быть кэширована |
Индексирование поисковыми системами | Страница с параметрами может быть индексирована | Страница с параметрами не может быть индексирована |
Возможность отправки файлов | Не поддерживается | Поддерживается |
Поддерживаемые типы кодирования | application/x-www-form-urlencoded | |
Использование в гиперссылках | Да | Нет |
Использование в HTML формах | Да | Да |
Использование в AJAX запросах | Да | Да |
Пример использования GET запроса
В примере показана простая HTML форма фильтра по нескольким параметрам.
HTML код формы, генерирующей GET запрос:
После отправки формы браузер переведет пользователя по ссылке:
Ссылка содержит URL документа, отвечающего за обработку и блок параметров. Знак «?» отмечает начало блока параметров GET запроса. Далее находятся пары «имя-значение», разделенные знаком «&». Имена параметров отделены от значений знаком «=».
Переход по ссылке, приведенной выше, будет равнозначен отправке формы с указанными параметрами.
Пример использования POST запроса
В примере показана простая HTML форма авторизации.
HTML код формы, генерирующей POST запрос:
После отправки формы браузер переведет пользователя по ссылке:
Для того, чтобы увидеть переданные параметры, воспользуемся инструментами разработчика.
Запрос состоит из области заголовков и тела запроса.
В заголовках указана служебная информация: URL обработчика, тип кодирования, параметры браузера и т.д.
В теле запроса содержатся передаваемые параметры. Формат тела запроса может отличаться в зависимости от выбранного типа кодирования.