Когда я должен использовать метод GET или POST? Какая между ними разница?
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 DATA).
от w3schools.com Вот ключевые моменты GET request
- GET-запросы могут кэшироваться
- GET запросы остаются в истории браузера
- GET запросы могут быть закладки
- GET запросы никогда не должны использоваться при работе с конфиденциальными данными
- GET запросы имеют ограничения по длине
- GET запросы должны использоваться только для получения данных
и вот ключевые моменты POST request
- запросы POST никогда не кэшируются
- POST запросы не остаются в истории браузера
- POST-запросы не могут быть закладки
- запросы POST не имеют ограничений по длине данных
есть два общих "безопасности" последствия для использования GET. Поскольку данные отображаются в строке URL, возможно, кто-то, глядя через плечо на адресную строку/URL, может просмотреть что-то, что они не должны быть посвящены, например, файл cookie сеанса, который потенциально может быть использован для захвата вашего сеанса. Имейте в виду все есть телефоны с камерой.
другое значение безопасности GET связано с тем, что переменные GET регистрируются в журнале доступа к большинству веб-серверов как часть запрашивающего URL. В зависимости от ситуации, регулирования климата и общей чувствительности данных, это может вызывать обеспокоенность.
некоторые клиенты / брандмауэры / системы IDS могут хмуриться на запросы GET, содержащие чрезмерный объем данных, и поэтому могут предоставлять несвязанные результаты.
POST поддерживает расширенные функции, такие как поддержка многосоставного двоичного ввода, используемого для загрузки файлов на веб-серверы.
POST требует заголовок content-length, который может увеличить сложность реализации конкретного клиента приложения, поскольку размер передаваемых данных должен быть известен заранее, предотвращая формирование запроса клиента в исключительно однопроходном инкрементном режиме.. Возможно, небольшая проблема для тех, кто предпочитает злоупотреблять HTTP, используя его в качестве транспорта RPC.
другие уже проделали хорошую работу по освещению семантических различий и части" когда " этого вопроса.
Я использую GET, когда я получаю информацию С URL и сообщение, когда я отправляю информацию to URL-адрес.
вы должны использовать POST, если есть много данных или конфиденциальной информации (действительно конфиденциальный материал также нуждается в безопасном соединении).
используйте GET, если вы хотите, чтобы люди могли пометить вашу страницу, потому что все данные включены в закладку.
просто будьте осторожны с людьми, нажимая обновить с помощью метода GET, потому что данные будут отправляться снова каждый раз без предупреждения пользователя (сообщение иногда предупреждает Пользователя о повторной отправке данных).
методы Get и Post не имеют ничего общего с используемой вами серверной технологией, она работает одинаково в php, asp.net или Руби. GET и POST являются частью протокола HTTP. Как отметил Марк, POST более безопасен. Формы POST также не кэшируются браузером. POST также используется для передачи больших объемов данных.
этой W3C в документе объясняет использование HTTP GET и POST.
Я думаю, что это авторитетный источник.
резюме (раздел 1.3 данного документа):
- использовать GET если взаимодействие больше похоже на вопрос (т. е. это безопасная операция, такая как запрос, операция чтения или поиск).
- использовать в должности если:
- взаимодействие больше похоже на заказ, или
- взаимодействие изменяет состояние ресурса таким образом, что пользователь будет воспринимать (например, подписку на услугу), или
- пользователь несет ответственность за результаты взаимодействия.
причина использования POST при внесении изменений в данные:
- веб-ускоритель, как Google Web Accelerator будет нажать все (получить) ссылки на странице и кэшировать их. Это очень плохо если ссылки менять.
- кэш браузера получает запросы, поэтому, даже если пользователь нажимает ссылку, он не может отправить запрос на сервер для выполнения изменения.
- для защиты вашего сайта/приложения от 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 запросы никогда не должны использоваться при работе с конфиденциальными данными
GET запросы имеют ограничения длины
GET запросы должны использоваться только для извлечения данных
Для Метода Post
запросы POST никогда не кэшируются
POST запросы не остаются в истории браузера
POST-запросы не могут быть закладки
запросы POST не имеют ограничений на длину данных
Узнать Больше подробнее о
на GET
способ:
Он используется только для отправки 256 дата символ
при использовании этого метода информацию можно увидеть в браузере
это метод по умолчанию, используемый forms
это не так защищен.
на POST
способ:
Он используется для отправки неограниченные данные.
С помощью этого метода информация не может быть видна в браузере
вы можете явно упомянуть
POST
методОн более защищен, чем
GET
методон обеспечивает более расширенные функции