Каковы преимущества использования ПОЛУЧИТЬ запроса по запросу POST?

29
задан Md. Abu Nafee Ibna Zahid 17 March 2018 в 11:02
поделиться

7 ответов

Я обычно ставил вопрос как таким образом: Делает что-нибудь важное изменение после запроса? (Регистрирующийся и т.п., несмотря на это). Если это делает, это должен быть запрос POST, если это не делает, это должен быть ПОЛУЧИТЬ запрос.

я рад, что Вы называете запросы POST "немного" более безопасными, потому что это в значительной степени, каковы они; это тривиально для фальсифицирования запроса POST пользователем к странице. При создании этого запрос POST, однако, препятствует тому, чтобы веб-акселераторы или перезагрузки повторно инициировали действие случайно.

Как Ajax, существует еще одно соображение: если Вы возвращаете JSON с поддержкой обратного вызова, очень осторожны для не помещения любых уязвимых данных, которые Вы не хотите, чтобы другие веб-сайты смогли видеть там. Википедия имела уязвимость вдоль этих строк, где пользователь anti-CSRF маркер был показан через их API JSON.

22
ответ дан 28 November 2019 в 01:01
поделиться

Необходимо использовать, ДОБИРАЮТСЯ, где Вы делаете запрос, который не имеет никаких побочных эффектов, например, просто выбирающий некоторую информацию. Этот запрос может:

  • быть повторенным без любой проблемы - если браузер обнаруживает ошибку, он может тихо повторить
  • , Кэшировали ее результат браузером
  • кэшироваться прокси

, Этими вещами является вся польза. Что-либо, что только получает данные (особенно общедоступные данные) должно действительно быть ПОЛУЧЕНИЕМ. Сервер должен отправить разумный Измененный в последний раз: и Истекает: заголовки, чтобы позволить кэшироваться при необходимости.

15
ответ дан 28 November 2019 в 01:01
поделиться

Запросы POST так небезопасны, как ДОБИРАЕТСЯ. Основное различие - то, что POST используется для изменения состояния серверного приложения, в то время как ДОБИРАЮТСЯ, только запрашивает данные от него.

различие имеет значение при использовании чистых, "успокоительных" URL где сам URL указывает ресурс, и различные методы инициировали различные действия со стороной сервера.

6
ответ дан 28 November 2019 в 01:01
поделиться

Это могло бы помочь Вам решить, где использовать, ДОБИРАЮТСЯ и где использовать POST:

URIs, Адресуемость и использование HTTP ДОБИРАЮТСЯ и POST.

8
ответ дан 28 November 2019 в 01:01
поделиться

Возможно, самое главное ДОБЕРИТЕСЬ, книга-markable / видимый в истории URL и доступный для поиска с Google.

POST важен, где Вы не делаете , хотят событие быть bookmarkable или быть в состоянии быть введенным как URL - иначе Вы (или Google, проверяющий Ваши URL), могли закончить тем случайно, что делали вещи как удаление пользователей от Вашей системы, например.

4
ответ дан 28 November 2019 в 01:01
поделиться

Есть еще одно отличие, о котором никто не упоминает.

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

Запросы POST могут быть намного больше - фактически не ограничены. Так что, если вам нужно запросить данные с веб-сервера и вы передаете много информации о параметрах, то запрос POST может быть единственным вариантом.

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

Было время, когда IE, как мне кажется, имел очень короткую строку GET URL. Некоторые приложения, такие как Lotus Notes, используют большое количество случайных символов для представления идентификаторов документов. У меня было неудовольствие использовать другой продукт, который генерировал случайные строки, поэтому URL-адрес страницы каждый раз был уникальным. Случайная строка была ОГРОМНОЙ ... и не всегда работала с IE6 по памяти.

7
ответ дан 28 November 2019 в 01:01
поделиться

Все хорошие моменты, однако, отвечая на вопрос, запросы GET более полезны в определенных сценариях, чем запросы POST:

  1. Их можно добавить в закладки
  2. Их можно кэшировать
  3. ] Они быстрее
  4. У них есть известные последствия (при условии, что они не изменяют данные), поэтому посещайте их несколько раз раз не проблема.

Для потомков, обновление этого комментария примечаниями к блогу re: point # 3 здесь, вся заслуга Омара А.Л. Забира (автора упомянутого сообщения в блоге ) :

«Atlas по умолчанию выполняет HTTP POST для всех вызовов AJAX. Http POST дороже, чем Http GET. Он передает больше байтов по сети, таким образом отнимая драгоценное сетевое время, а также заставляет ASP.NET делать дополнительные обработка на стороне сервера. Итак, вы должны использовать Http Get столько, сколько возможное. Однако Http Get не позволяет передавать объекты как параметры. Вы можете передавать только числа, строку и дату. Когда вы делаете вызов Http Get, Atlas создает закодированный URL-адрес и обращается к нему URL. Таким образом, вы не должны передавать слишком много контента, из-за которого URL-адрес становится больше 2048 символов. Насколько я знаю, это максимальный длина любого url.

Еще одна неприятная черта http-поста в том, что на самом деле это 2 вызова. Первый браузер отправляет заголовки сообщений http, а сервер отвечает «HTTP 100 Продолжать". Когда браузер получает это, он отправляет фактическое тело. "

14
ответ дан 28 November 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: