GET против POST в Ajax

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

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

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

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

Независимо от того, является ли его AJAX или нет. Это о действии, которое вы принимаете. Я бы рекомендовал следовать принципам REST. У которых есть дополнительные положения для обновления, удаления и т.д.

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

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

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

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

Ответ 7

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

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

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

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

Ответ 8

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

Ответ 9

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

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

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

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

Ответ 10

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

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

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