GET vs POST в Ajax


в чем разница между GET и POST на Ajax запросы?

Я не вижу никакой разницы между этими двумя, За исключением того, что когда я использую GET, параметры отправляются в URL, что для меня действительно не имеет никакого значения, так как все запросы выполняются в фоновом режиме, и пользователь не находит никакой разницы.

изменить: Что такое PUT и удалить методы, используемые для?

10 71

10 ответов:

GET предназначен для получения данных с сервера. POST (и менее известные друзья PUT и DELETE) предназначены для изменения данных на сервере.

запрос GET никогда не должен приводить к удалению данных из приложения. Если у вас есть ссылка, на которую вы можете нажать, чтобы удалить данные, то Google spidering ваш сайт может нажать на все ваши ссылки "Удалить".

канонический ответ можно найти здесь, который цитирует HTML 2.0 спецификация:

Если обработка формы идемпотентна (т. е. она не имеет прочного заметное влияние на состояние мир), то метод формы должен быть ПОЛУЧИТЬ. Поиск в базе нет видимые побочные эффекты и делают идеал применение форм запросов.

Если услуга, связанная с обработкой формы, имеет побочные эффекты (например, изменение базы данных или подписка на сервис), метод должен быть ДОЛЖНОСТЬ.

в вашем вызове AJAX вам нужно использовать любой метод, который поддерживает ваш сервер. Вы всегда должны создавать свой сервер так, чтобы операции, изменяющие данные, вызывались POST/PUT/DELETE. Другие комментарии есть ссылки на остальные, которых, как правило, карты С/Р/У/Д "Post или put"(создать)/вам(читать)/put(обновить)/удалить(delete).

Если вы отправляете большие объемы данных или конфиденциальные данные по HTTPS, вы захотите использовать POST. Если это просто простой параметр, я бы использовал GET.

GET запросы имеют ограничение на объем данных, которые могут быть отправлены. Я забыл точное число, но это может вызвать проблемы, если вы отправляете что-либо существенное.

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

является ли его AJAX или нет, не имеет значения. Его о действии, которое вы принимаете. Я бы рекомендовал следовать принципам остальное. Которые имеют дополнительные положения для обновления, удаления и т. д...

запросы GET легче использовать в атаках CSRF (cross site request forgery). А именно, поддельные запросы POST требуют включения Javascript на стороне пользователя, в то время как поддельные запросы GET по-прежнему возможны только с помощью тегов img, script.

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

кроме того, большинство серверного программного обеспечения регистрирует URL-адреса в журналах доступа, поэтому если вы передаете конфиденциальную информацию (например, пароли) в запросе GET, это, по всей вероятности, будет записано на диск в виде открытого текста.

с точки зрения REST, запросы GET не должны иметь побочных эффектов-они не должны изменять данные. Итак, если вы просто получая ресурс по идентификатору, это имеет смысл, но если вы фиксируете изменения в ресурсе, вы должны использовать PUT, POST или UPDATE для команды http.

оба используются для отправки некоторых данных и получения некоторого ответа, используя эти данные.

GET: получить хранилище информации на сервере. То есть. Поиск, твит, информация о человеке. Если вы хотите отправить информацию, то получить запрос отправить запрос с помощью процесса.php?имя=Гатот Поэтому он в основном отправляет информацию через url. Url не может обрабатывать более 2083 символов. Так что для блога вы можете вспомнить, что это невозможно?

POST: Post делает то же самое, что и get. Регистрация пользователя, логин пользователя, большой отправка данных, запись в блоге. Если вам нужно отправить защищенную информацию, то используйте post или для больших данных, поскольку они не проходят через url.

AJAX:$.получать и.$ post () содержит объекты, которые являются подмножествами $.Аякс.)( Он имеет много настроек.

$.get () метод, который является своего рода стенографией для $.Аякс.)( При использовании.$ get (), вместо передачи объекта, вы передаете аргументы. Как минимум, вам понадобятся первые два аргумента, которые являются URL-адресом файла, который вы хотите получить (т. е. ‘испытание.txt’) и успешный обратный вызов.

резюме:

$.get( url [, data ] [, success ] [, dataType ] )
$.post( url [, data ] [, success ] [, dataType ] ) // for sending secure or Large information
$.ajax( url [, settings ] )  // More Configaration

обо мне, я предпочитаю пост. Я резервирую get для событий, которые я знаю, что отправленное значение ограничено данными, у меня есть" контроль", например, для возврата элемента с идентификатором. Например, "метод getitem?id=123", " deleteImtem?id=123", ... В других случаях, когда у меня есть форма, заполняемая пользователем, я предпочитаю POST.

Как сказал Райан Смит, лучше использовать POST для отправки большого количества данных и меньше беспокоиться в случаях использования в других языках / специальных символах (как правило, все основные JavaScript framework не должен иметь никаких проблем, чтобы справиться с этим, но я думаю, что это меньше беспокоит использовать POST).

для остальной перспективы, на мой взгляд, вы можете использовать это с новым проектом (чтобы сохранить согласованность со всем проектом).

наконец, возможно, некоторые программы, используемые в сети (URL loguers (ie.: чтобы увидеть, если сотрудники потеряли свое время на неавторизованных сайтах,...) полномочие. ,.. ) или любой другой вид инструмента может перехватить запрос. Некоторые из них будут показаны в сообщает параметры, которые вы отправили с GET, рассматривая его как другую веб-страницу. Но в этой ситуации, это может быть не ваша проблема, это меняется от проекта к другому! ;)

во-первых, общая информация. Используйте GET Если вы только читаете данные, используйте POST Если вы что-то меняете в базе данных, txt-файлах и т. д.

но проблема в том, что некоторые браузеры кэшируют GET результаты. У меня были проблемы с AJAX запросы в IE7, но наконец я узнал, что браузер кэширует GET результаты. Я переосмыслил поток и изменил свой запрос на POST.

итак, не используйте GET Если вы не хотите, чтобы кэширование.

(конечно, вы можете отключить кэширование в GET operations. Но мне это не понравилось)

разница такая же между GET и POST используете ли вы Ajax, HTML formили curl. Вот соответствующие определения:

Если вы передаете какие-либо аргументы с символами, которые могут быть перепутаны в URL (например, пробелы), вы используете POST. В противном случае вы можете использовать GET.

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

существуют также определенные фреймворки, которые полностью зависят от URL-адресов на основе сегментов (например,site.com/products/133, а не site.com/products.php?id=333 и эти фреймворки отключают переменные GET для обеспечения безопасности. В таких случаях вы будете использовать пост все время.