Когда я должен использовать метод GET или POST? Какая между ними разница?
в чем разница при использовании GET
или POST
способ? Какой из них более безопасный? Каковы (dis)преимущества каждого из них?
15 ответов:
Это не вопрос безопасности. Протокол HTTP определяет запросы типа GET какидемпотентных, в то время как сообщения могут иметь побочные эффекты. На простом английском языке это означает, что GET используется для просмотра чего-то, не изменяя его, в то время как POST используется для изменения чего-то. Например, страница поиска должна использовать GET, а форма, которая изменяет ваш пароль, должна использовать POST.
кроме того, обратите внимание, что PHP немного путает понятия. Запрос POST получает входные данные из запроса строка и через тело запроса. Запрос GET просто получает входные данные из строки запроса. Таким образом, запрос POST является надмножеством запроса GET; вы можете использовать
$_GET
в запросе POST, и это может даже иметь смысл иметь параметры с тем же именем в$_POST
и$_GET
Это означает разные вещи.например, скажем, у вас есть форма для редактирования статьи. Идентификатор статьи может быть в строке запроса (и, таким образом, доступен через
$_GET['id']
), но допустим, что вы хотите изменить статья-id. Затем новый идентификатор может присутствовать в теле запроса ($_POST['id']
). Хорошо, возможно, это не лучший пример, но я надеюсь, что он иллюстрирует разницу между ними.
когда пользователь вводит информацию в форму и нажимает кнопку Отправить, существует два способа отправки информации из браузера на сервер: в URL-адрес или в теле HTTP-запроса.
метод GET, который использовался в Примере ранее, добавляет пары имя / значение к URL-адресу. К сожалению, длина URL-адреса ограничена, поэтому этот метод работает только при наличии нескольких параметров. URL-адрес может быть усечен, если форма использует большое количество параметров, или если параметры содержат большие объемы данных. Кроме того, параметры, переданные по URL-адресу, видны в поле адреса браузера не лучшее место для отображения пароля.
альтернативой методу GET является метод POST. Этот метод упаковывает пары имя / значение внутри тела HTTP-запроса, что обеспечивает более чистый URL-адрес и не накладывает ограничений на размер выходных данных форм. Это также более безопасно.
лучшим ответом был первый.
вы используете:
- GET когда вы хотите получить данные (получить данные).
- POST когда вы хотите отправить данные (POST DATA).
с w3schools.com Вот несколько ключевых пунктов вам запрос
- GET-запросы могут кэшироваться
- получить запросы остаются в истории браузера
- GET запросы могут быть закладки
- GET запросы никогда не должны использоваться при работе с конфиденциальными данными
- GET запросы имеют ограничения по длине
- GET запросы должны использоваться только для извлечения данных
и вот ключевые моменты POST request
- запросы POST никогда не кэшируются
- запросы POST не остаются в истории браузера
- POST-запросы не могут быть закладки
- запросы POST не имеют ограничений на длину данных
есть два общих "безопасности" последствия для использования GET. Поскольку данные отображаются в строке URL, возможно, кто-то, глядя через ваше плечо на адресную строку/URL, может просматривать что-то, к чему они не должны быть причастны, например, файл cookie сеанса, который потенциально может быть использован для захвата вашего сеанса. Имейте в виду все есть телефоны с камерой.
другое значение безопасности GET связано с тем, что переменные GET регистрируются в журнале доступа к большинству веб-серверов в рамках запрашиваемого URL-адреса. В зависимости от ситуации, регулирования климата и общей чувствительности данных, это может вызывать обеспокоенность.
некоторые клиенты / брандмауэры / системы идентификаторов могут хмуриться на запросы GET, содержащие чрезмерное количество данных, и поэтому могут предоставлять недостоверные результаты.
POST поддерживает расширенные функциональные возможности, такие как поддержка многосоставного двоичного ввода, используемого для загрузки файлов на веб-серверы.
сообщение требует a заголовок content-length, который может увеличить сложность реализации конкретного клиента приложения, поскольку размер представленных данных должен быть известен заранее, предотвращая формирование запроса клиента в исключительно однопроходном инкрементном режиме.. Возможно, небольшая проблема для тех, кто решил злоупотреблять HTTP, используя его в качестве транспорта RPC.
другие уже проделали хорошую работу по освещению семантических различий и части" когда " этого вопроса.
вы должны использовать 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) ссылки на странице и кэшировать их. Это очень плохо если ссылки менять.
- кэш браузера получает запросы, поэтому даже если пользователь нажимает ссылку, он не может отправить запрос на сервер для выполнения изменения.
- для защиты вашего сайта/приложения от CSRF вы должны использовать POST. Чтобы полностью обезопасить ваш приложение затем вы должны также создать уникальный идентификатор на сервере и отправить его вместе с запросом.
кроме того, не помещайте конфиденциальную информацию в строку запроса (только опция с GET), потому что она отображается в адресной строке, закладках и журналах сервера.
надеюсь, это объясняет, почему люди говорят, что сообщение "безопасно". Если вы передаете конфиденциальные данные, вы должны использовать SSL.
GET
иPOST
являются HTTP методы, которые можете достижения подобных целей
GET
в основном только для получения (извлечения) данныхGET
не должно иметь тела, поэтому, кроме куки, единственное место для передачи информации находится в URL, а URL-адреса ограничены по длине,GET
менее безопасно по сравнению сPOST
потому что отправленные данные являются частью URLникогда не используйте
GET
при отправке паролей, кредитных карт или другой конфиденциальной информации!, Данные видны всем в URL, могут быть кэшированы данные .GET
безвреден, когда мы перезагружаем или вызываем кнопку назад, она будет отмечена книгой, параметры остаются в истории браузера, разрешены только символы ASCII.
POST
может включать в себя что угодно, например, хранение или обновление данных, заказ продукта или отправку электронной почты.POST
метод имеет тело.
POST
метод защищен для передачи конфиденциальной и конфиденциальной информации на сервер он не будет видимые в параметрах запроса в URL и параметры не сохраняются в истории браузера. Нет никаких ограничений на длину данных. Когда мы перезагружаем браузер должен предупредить пользователя, что данные собираются быть повторно представлены.POST
метод не может быть закладки
- метод GET используется для отправки менее конфиденциальных данных, тогда как метод POST используется для отправки конфиденциальных данных.
- С помощью метода POST вы можете отправить большой объем данных по сравнению с методом GET.
- данные, отправленные методом GET, видны в строке заголовка браузера, тогда как данные, отправленные методом POST, невидимы.
используйте метод GET, если вы хотите получить ресурсы из URL. Вы всегда можете увидеть последнюю страницу, если вы нажмете кнопку "Назад" в своем браузере, и она может быть заложена, поэтому она не так безопасна, как метод POST.
используйте метод POST, если вы хотите "отправить" что-то на URL. Например, вы хотите создать учетную запись google, и вам может потребоваться заполнить всю подробную информацию, затем вы нажмете кнопку "Отправить" (метод POST вызывается здесь), как только вы успешно отправите, и попробуйте нажать кнопку Назад Вашего браузера, вы получите ошибку или новую пустую форму, вместо последней страницы с заполненной формой.
несколько важных замечаний следует отметить
согласно w3cschools.com ' s explaination
Для Метода Get:
GET-запросы могут кэшироваться
получить запросы остаются в истории браузера
GET запросы могут быть закладки
GET запросы никогда не должны использоваться при работе с конфиденциальными данными
сделать запросы ограничения по длине
GET запросы должны использоваться только для извлечения данных
Для Метода Post
запросы POST никогда не кэшируются
POST запросы не остаются в истории браузера
POST-запросы не могут быть закладки
запросы POST не имеют ограничений на длину данных
Узнать Больше подробности на
The
GET
способ:
Он используется только для отправки 256 дата символ
при использовании этого метода информацию можно увидеть в браузере
это метод по умолчанию, используемый forms
это не так защищен.
The
POST
способ:
Он используется для отправки неограниченные данные.
С помощью этого метода информация не может быть видна в браузере
вы можете явно упомянуть
POST
методОн более защищен, чем
GET
методОн обеспечивает более продвинутые функции