Какая разница при использовании метода GET
или POST
? Какой из них более безопасен? Каковы преимущества (преимущества) каждого из них?
Когда следует использовать метод GET или POST? Какая разница между ними?
Ответ 1
Это не вопрос безопасности. Протокол HTTP определяет запросы типа GET как idempotent, тогда как POST могут иметь побочные эффекты. На простом английском языке это означает, что GET используется для просмотра чего-либо, не меняя его, в то время как POST используется для изменения чего-либо. Например, страница поиска должна использовать GET, а форма, которая изменяет ваш пароль, должна использовать POST.
Также обратите внимание, что PHP немного путает концепции. Запрос POST вводится из строки запроса и через тело запроса. Запрос GET просто вводится из строки запроса. Таким образом, запрос POST является надмножеством запроса GET; вы можете использовать $_GET
в запросе POST, и может даже иметь смысл иметь параметры с тем же именем в $_POST
и $_GET
, что означает разные вещи.
Например, скажем, у вас есть форма для редактирования статьи. Идентификатор статьи может быть в строке запроса (и, следовательно, доступен через $_GET['id']
), но пусть говорят, что вы хотите изменить идентификатор статьи. Новый идентификатор может затем присутствовать в теле запроса ($_POST['id']
). Хорошо, возможно, это не лучший пример, но я надеюсь, что это иллюстрирует разницу между ними.
Ответ 2
Когда пользователь вводит информацию в форму и нажимает "Отправить", существует два способа отправки информации из браузера на сервер: в URL-адресе или в теле запроса HTTP.
Метод GET, который использовался в предыдущем примере, добавляет пары имени/значения в URL. К сожалению, длина URL-адреса ограничена, поэтому этот метод работает только в том случае, если имеется только несколько параметров. URL-адрес может быть усечен, если форма использует большое количество параметров или если параметры содержат большие объемы данных. Кроме того, параметры, переданные по URL-адресу, видны в поле адреса браузера не лучшим местом для отображения пароля.
Альтернативой методу GET является метод POST. Этот метод упаковывает пары имя/значение внутри тела HTTP-запроса, что делает URL-адрес более чистого и не налагает ограничений размера на выходные данные форм. Это также более безопасно.
Ответ 3
Лучший ответ был первым.
Вы используете:
- GET, когда вы хотите получить данные (GET DATA).
- POST, если вы хотите отправить данные (POST DATA).
Ответ 4
Вот ключевой момент запроса GET
- Запросы GET можно кэшировать
- Запросы GET остаются в истории браузера
- Запросы GET можно добавить в закладки
- Запросы GET никогда не должны использоваться при работе с конфиденциальными данными.
- Запросы GET имеют ограничения по длине
- Запросы GET должны использоваться только для извлечения данных.
и вот ключевой момент запроса POST
- Запросы POST никогда не кэшируются
- Запросы POST не сохраняются в истории браузера
- Запросы POST не могут быть отмечены закладкой
- Запросы POST не имеют ограничений на длину данных
Ответ 5
Для использования GET существуют два распространенных "эффекта безопасности". Поскольку данные отображаются в строке URL-адреса, возможно, кто-то, просматривающий ваше плечо в адресной строке/URL-адресе, может просматривать что-то, что они не должны быть конфиденциальными, например, cookie сеанса, который потенциально может использоваться для захвата вашей сессии. Имейте в виду, что у всех есть камеры.
Другое влияние GET на GET связано с тем, что переменные GET регистрируются в большинстве журналов доступа к веб-серверам как часть запрашивающего URL. В зависимости от ситуации, нормативного климата и общей чувствительности данных, которые могут потенциально вызвать проблемы.
Некоторые клиенты/брандмауэры/системы IDS могут недовольны запросами GET, содержащими чрезмерное количество данных, и поэтому могут давать ненадежные результаты.
POST поддерживает расширенные функции, такие как поддержка многочастного двоичного входа, используемого для загрузки файлов на веб-серверы.
POST требует заголовок длины контента, который может увеличить сложность реализации конкретного приложения для клиента, поскольку размер передаваемых данных должен быть заранее известен, что предотвращает формирование запроса клиента в эксклюзивном однократном инкрементном режиме. Возможно, второстепенная проблема для тех, кто предпочитает злоупотреблять HTTP, используя его как транспорт RPC.
Другие уже сделали хорошую работу в освещении семантических различий и "когда" часть этого вопроса.
Ответ 6
Я использую GET, когда я получаю информацию от URL и POST, когда я отправляю информацию на URL.
Ответ 7
Вы должны использовать POST, если есть много данных или сортировка конфиденциальной информации (очень чувствительный материал нуждается в защищенном соединении).
Используйте GET, если вы хотите, чтобы люди могли добавлять закладки на страницу, потому что все данные включены в закладку.
Просто будьте осторожны с тем, что люди нажимают REFRESH с помощью метода GET, потому что данные будут отправляться каждый раз без предупреждения пользователя (POST иногда предупреждает пользователя о повторных отправках данных).
Ответ 8
Методы Get и Post не имеют ничего общего с технологией сервера, которую вы используете, она работает одинаково в php, asp.net или ruby. GET и POST являются частью протокола HTTP. Как отмечалось выше, POST более безопасен. Бланки POST также не кэшируются браузером. POST также используется для передачи больших объемов данных.
Ответ 9
Этот документ W3C объясняет использование HTTP GET и POST.
Я думаю, что это авторитетный источник.
Резюме (раздел 1.3 документа):
- Используйте GET, если взаимодействие больше похоже на вопрос (т.е. это безопасная операция, такая как запрос, операция чтения или поиск).
- Используйте POST, если:
- Взаимодействие больше похоже на порядок, или
- Взаимодействие изменяет состояние ресурса таким образом, что пользователь будет воспринимать (например, подписку на услугу) или
- Пользователь будет привлечен к ответственности за результаты взаимодействия.
Ответ 10
Причина использования POST при внесении изменений в данные:
- Веб-ускоритель, такой как Google Web Accelerator, будет нажимать на все ссылки (GET) на странице и кэшировать их. Это очень плохо, если ссылки вносят изменения в вещи.
- Браузер кэширует запросы GET, поэтому даже если пользователь нажимает на ссылку, он не может отправить запрос на сервер для выполнения изменения.
- Чтобы защитить ваш сайт/приложение от CSRF, вы должны использовать POST. Чтобы полностью защитить ваше приложение, вы также должны генерировать уникальный идентификатор на сервере и отправлять его в запросе.
Кроме того, не помещайте конфиденциальную информацию в строку запроса (только опция с GET), поскольку она отображается в адресной строке, закладках и журналах сервера.
Надеюсь, это объясняет, почему люди говорят, что POST является "безопасным". Если вы передаете конфиденциальные данные, вы должны использовать SSL.
Ответ 11
GET
и POST
являются методами HTTP, которые могут достигать схожих целей
GET
в основном предназначен для получения (получения) данных, A GET
не должен иметь тело, поэтому в стороне от файлов cookie единственным адресом для передачи информации является URL-адрес, а URL-адреса ограничены по длине, GET
менее безопасен по сравнению с POST
, потому что отправленные данные являются частью URL
Никогда не используйте GET
при отправке паролей, кредитной карты или другой важной информации!, Данные видны всем в URL-адресе, могут быть кэшированы.
GET
является безобидным, когда мы перезагружаемся или вызываем кнопку, она будет отмечена книгой, параметры остаются в истории браузера, допускаются только символы ASCII.
POST
может включать в себя что угодно, например, хранить или обновлять данные, или заказывать продукт, или отправлять электронную почту. POST
метод имеет тело.
POST
метод защищен для передачи конфиденциальной и конфиденциальной информации на сервер, он не будет отображаться в параметрах запроса в URL-адресе, а параметры не сохраняются в истории браузера. Нет ограничений на длину данных. Когда мы перезагружаемся, браузер должен предупредить пользователя о том, что данные будут повторно отправлены. POST
нельзя занести в закладки
Ответ 12
- Метод GET используется для отправки менее чувствительных данных, тогда как метод POST используется для отправки конфиденциальных данных.
- Используя метод POST, вы можете отправить большой объем данных по сравнению с методом GET.
- Данные, отправленные методом GET, видны в панели заголовков браузера, тогда как передача данных методом POST невидима.
Ответ 13
Используйте метод GET, если вы хотите получить ресурсы из URL. Вы всегда можете увидеть последнюю страницу, если вы нажмете кнопку "Назад" в своем браузере, и она может быть отмечена закладкой, поэтому она не так безопасна, как метод POST.
Используйте метод POST, если вы хотите "отправить" что-то URL. Например, вы хотите создать учетную запись google, и вам может понадобиться заполнить всю подробную информацию, после чего вы нажмете кнопку "отправить" (метод POST вызывается здесь), как только вы отправите успешно, и попробуйте нажать кнопку возврата в браузере, вы получите ошибку или новую пустую форму, а не последнюю страницу с заполненной формой.
Ответ 14
Следует отметить несколько важных заметок
Согласно объяснению w3cschools.com
Для метода получения:
-
Запросы GET можно кэшировать
-
Запросы GET остаются в истории браузера
-
Запросы GET можно добавить в закладки
-
Запросы GET никогда не должны использоваться при работе с конфиденциальными данными
-
Запросы GET имеют ограничения по длине
-
Запросы GET должны использоваться только для извлечения данных
Для метода почты
-
Запросы POST никогда не кэшируются
-
Запросы POST не сохраняются в истории браузера
-
Запросы POST не могут быть отмечены закладкой
-
Запросы POST не имеют ограничений на длину данных
Получить более подробную информацию о
Ответ 15
Метод GET
:
-
Он используется только для отправки 256-символьной даты
-
При использовании этого метода информацию можно увидеть в браузере
-
Это метод по умолчанию, используемый формами
-
Это не так безопасно.
Метод POST
:
-
Он используется для отправки неограниченных данных.
-
С помощью этого метода информация не отображается в браузере
-
Вы можете явно указать метод
POST
-
Он более защищен, чем метод
GET
-
Он предоставляет более продвинутые функции