Когда следует использовать метод GET или POST? В чем разница между ними?



В чем разница при использовании метода GET или POST? Какой из них более безопасен? Каковы преимущества каждого из них?



(аналогичный вопрос )

1708   15  

15 ответов:

Это не вопрос безопасности. Протокол HTTP определяет запросы типа GET как идемпотентные , в то время как сообщения могут иметь побочные эффекты. На простом английском это означает, что GET используется для просмотра чего-то, не изменяя его, в то время как POST используется для изменения чего-то. Например, страница поиска должна использовать GET, в то время как форма, которая изменяет ваш пароль, должна использовать POST.

Также обратите внимание, что PHP немного путает понятия. Запрос POST получает входные данные из строки запроса и через тело запроса. Запрос GET просто получает входные данные из строки запроса. Таким образом, POST-запрос является надмножеством запроса GET; вы можете использовать $_GET в POST-запросе, и может даже иметь смысл иметь параметры с одинаковым именем в $_POST и $_GET, которые означают разные вещи.

Например, допустим у вас есть форма для редактирования статьи. Идентификатор статьи может быть в строке запроса (и, таким образом, доступен через $_GET['id']), но предположим, что вы хотите изменить идентификатор статьи. Новый идентификатор может затем присутствуйте в теле запроса ($_POST['id']). Ладно, возможно, это не лучший пример, но я надеюсь, что он иллюстрирует разницу между ними.

Когда пользователь вводит информацию в форму и нажимает кнопку Отправить, существует два способа отправки информации из браузера на сервер: в URL или в теле HTTP-запроса.

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

Альтернативой методу GET является метод POST. Этот метод упаковывает пары имя / значение внутри тела HTTP-запроса, что делает URL-адрес более чистым и не накладывает ограничений на размер выходных данных форм. Это также более безопасно.

Лучшим ответом был первый.

Вы используете:

  • GET , Когда вы хотите получить данные (GET DATA).
  • POST , Когда вы хотите отправить данные (POST DATA).

От w3schools.com Вот несколько ключевых пунктов запрос GET

  • запросы GET можно кэшировать
  • запросы GET остаются в истории браузера
  • запросы GET могут быть помечены закладками
  • запросы GET никогда не должны использоваться при работе с конфиденциальными данными
  • запросы GET имеют ограничения по длине
  • запросы GET должны использоваться только для извлечения данных

А вот ключевые моменты поста запрос

  • запросы POST никогда не кэшируются
  • запросы POST не остаются в истории браузера
  • почтовые запросы не могут быть помечены закладками
  • POST-запросы не имеют ограничений на длину данных

Существует два распространенных "безопасность" последствия использования вам. Поскольку данные появляются в строке URL, возможно, кто-то, глядя через ваше плечо на адресную строку/URL, может увидеть что-то, что они не должны быть посвящены, например, файл cookie сеанса, который потенциально может быть использован для захвата вашего сеанса. Имейте в виду, что у всех есть телефоны с камерами.

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

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

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

Должности требуется контент-длина заголовка, которая может увеличить сложность реализации конкретного клиента приложения, так как размер передаваемых данных должен быть заранее известен, что не позволяет формировать запрос клиента исключительно в однопроходном инкрементном режиме.. Возможно, небольшая проблема для тех, кто решил злоупотреблять HTTP, используя его в качестве транспорта RPC.

Другие уже проделали хорошую работу по освещению семантических различий и части" когда " этого вопроса.

Я использую GET, когда я получаю информацию из URL и POST, Когда я отправляю информацию в URL.

Вы должны использовать POST, если есть много данных, или сортировка конфиденциальной информации (действительно конфиденциальные вещи также нуждаются в защищенном соединении).

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

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

Методы Get и Post не имеют ничего общего с серверной технологией, которую вы используете, она работает одинаково в php, asp.net или Руби. GET и POST являются частью протокола HTTP. Как отметил Марк, почта более безопасна. Почтовые формы также не кэшируются браузером. POST также используется для передачи больших объемов данных.

Этот документW3C объясняет использование HTTP GET и POST.

Я думаю, что это авторитетный источник.

Резюме (раздел 1.3 документа):

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

Причина использования POST при внесении изменений в данные:

  • веб-ускоритель, такой как Google Web Accelerator, нажимает все ссылки (GET) на странице и кэширует их. Это очень плохо, если ссылки вносят изменения в вещи.
  • браузер кэширует запросы GET, поэтому даже если пользователь нажимает ссылку, он не может отправить запрос на сервер для выполнения изменения.
  • для защиты вашего сайта / приложения от CSRF вы должны использовать POST. Чтобы полностью обезопасить свое приложение, вы должны также создайте уникальный идентификатор на сервере и отправьте его вместе с запросом.

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

Надеюсь, это объясняет, почему люди говорят, что Почта "безопасна". Если вы передаете конфиденциальные данные, вы должны использовать SSL.

GET и POST - это HTTP-методы, которые могут достигать аналогичных целей

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

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

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

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

    Метод GET используется для отправки менее конфиденциальных данных, в то время как метод POST используется для отправки конфиденциальных данных.
  1. используя метод POST, вы можете отправить большое количество данных по сравнению с методом GET.
  2. данные, отправленные методом GET, видны в строке заголовка браузера, в то время как данные, отправленные методом POST, невидимы.

Используйте метод GET, если вы хотите получить ресурсы из URL. Вы всегда можете увидеть последнюю страницу, если нажмете кнопку Назад в вашем браузере, и она может быть помечена закладками, поэтому она не так безопасна, как метод POST.

Используйте метод POST, если вы хотите "отправить" что-то на URL. Например, вы хотите создать учетную запись google, и вам может потребоваться заполнить всю подробную информацию, затем вы нажимаете кнопку "Отправить" (метод POST вызывается здесь), после того, как вы успешно отправите, и пытаетесь нажать кнопка Назад Вашего браузера, вы получите ошибку или новую пустую форму, вместо последней страницы с заполненной формой.

Следует упомянуть несколько важных замечаний

Согласно w3cschools.com объяснение

Для Метода Get:

  • Запросы GET можно кэшировать

  • GET запросы остаются в истории браузера

  • Запросы GET могут быть помечены закладками

  • Запросы GET никогда не должны использоваться при работе с конфиденциальными данными

  • Запросы GET имеют ограничения по длине

  • GET запросы должны использоваться только для извлечение данных

Для Метода Post

  • Запросы POST никогда не кэшируются

  • Запросы POST не остаются в истории браузера

  • Почтовые запросы не могут быть помечены закладками

  • POST-запросы не имеют ограничений на длину данных

Подробнее о

Https://www.w3schools.com/tags/ref_httpmethods.asp

Метод GET:

  • Он используется только для отправки 256-символьной даты

  • При использовании этого метода информацию можно увидеть в браузере

  • Это метод по умолчанию, используемый формами

  • Это не так надежно.


Метод POST:

  • Он используется для отправки неограниченного количества данных.

  • С помощью этого метода информация не может быть видна на экране. браузер

  • Вы можете явно упомянуть метод POST

  • Это более надежно, чем метод GET

  • Он предоставляет более продвинутые функции

Comments

    Ничего не найдено.