ПОЛУЧИТЬ ПОЧТУ в Ajax - PullRequest
       12

ПОЛУЧИТЬ ПОЧТУ в Ajax

71 голосов
/ 03 апреля 2009

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

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

редактирование: Для чего используются методы PUT и DELETE ?

Ответы [ 10 ]

131 голосов
/ 03 апреля 2009

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

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

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

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

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

При вызове AJAX вам нужно использовать любой метод, поддерживаемый вашим сервером. Вы должны всегда проектировать свой сервер так, чтобы операции, которые изменяют данные, вызывались POST / PUT / DELETE. Другие комментарии имеют ссылки на REST, который обычно отображает C / R / U / D в «POST или PUT» (Создать) / GET (Читать) / PUT (Обновить) / DELETE (Удалить).

24 голосов
/ 03 апреля 2009

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

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

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

19 голосов
/ 03 апреля 2009

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

4 голосов
/ 04 апреля 2009

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

3 голосов
/ 03 апреля 2009

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

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

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

2 голосов
/ 27 ноября 2016

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

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

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

AJAX: $ .get () и $ .post () содержат функции, которые являются подмножествами $ .ajax (). У него много настроек.

$. Get () метод, который является своего рода сокращением для $ .Ajax (). При использовании $ .get () вместо передачи объекта вы передаете аргументы. Как минимум, вам понадобятся первые два аргумента, которые являются URL-адресом файла, который вы хотите получить (т. Е. «Test.txt») и обратным вызовом.

Резюме:

$.get( url [, data ] [, success ] [, dataType ] )
$.post( url [, data ] [, success ] [, dataType ] ) // for sending secure or Large information
$.ajax( url [, settings ] )  // More Configaration
1 голос
/ 11 мая 2014

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

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

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

(Конечно, вы можете отключить кэширование в операциях GET. Но я не предпочел это)

1 голос
/ 04 апреля 2009

О себе, я предпочитаю ПОСТ. Я оставляю за собой доступ к событиям, которые я знаю, что отправленное значение ограничено данными, которые у меня есть «контроль», например, для получения элемента с идентификатором. Например, "getitem? Id = 123", "deleteImtem? Id = 123", ... Для других случаев, когда у меня есть форма, заполняемая пользователем, я предпочитаю POST.

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

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

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

0 голосов
/ 03 апреля 2009

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

0 голосов
/ 03 апреля 2009

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

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

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

...