Когда следует использовать GET вместо POST в веб-приложении? - PullRequest
9 голосов
/ 19 ноября 2010

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

Так почему и в какой ситуации можно использовать GET, если POST имеет эти 2 преимущества?

Какое преимущество имеет GETPOST

Ответы [ 4 ]

5 голосов
/ 19 ноября 2010

вы правы, однако лучше использовать получатели для поисковых страниц и тому подобное.Места, где вы хотите, чтобы URL были очевидными и обнаруживаемыми.Если вы посмотрите на Google (или любую поисковую страницу), в конце вы увидите www.google.com/?q=my+search, чтобы люди могли напрямую ссылаться на результаты поиска.

Вы на самом деле много пользуетесь GETбольше, чем ты думаешь.Простой возврат веб-страницы - это запрос GET.Есть также POST, PUT, DELETE, HEAD, OPTIONS, и все они используются в интерфейсах программирования RESTful.

GET vs. POST не влияет на безопасность, они оба небезопасны, если вы не используете HTTP / SSL.

2 голосов
/ 03 декабря 2010

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

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

Протокол не допускает ничего, кроме простых скалярных типов данных, в качестве параметров в GET - например, Вы можете только отправить файл, используя POST или PUT.

Существуют также ограничения реализации - в прошлый раз, когда я проверял, размер URL-адреса в MSIE был ограничен 2k.

Наконец, как вы заметили, существует проблема видимости данных - вы можете не захотеть, чтобы пользователи добавляли в закладки URL-адрес, содержащий номер / пароль своей кредитной карты.

POST - это путь, потому что он приводит к чистоте URL

Это скорее противоречит цели того, что такое URL. Прочитайте RFC 1630 - Необходим универсальный синтаксис.

2 голосов
/ 19 ноября 2010

Иногда вы хотите, чтобы ваше веб-приложение было доступно для обнаружения, поскольку пользователи могут просто догадываться, каким должен быть URL для определенной операции. Это дает приятный пользовательский опыт, и для этого вы должны использовать GET и основывать свои URL на какой-то спецификации RESTful, такой как http://microformats.org/wiki/rest/urls

0 голосов
/ 19 ноября 2010

Если под «веб-приложением» вы подразумеваете «веб-сайт», то как разработчик у вас действительно нет выбора. GET или POST-запросы делают не вы как разработчик, а ваш пользователь. Они делают запросы через свой веб-браузер.

Когда вы запрашиваете веб-страницу, вводя ее URL в адресную строку браузера (или нажимая на ссылку и т. Д.), Браузер выдает запрос GET.

Когда вы отправляете веб-страницу с помощью кнопки, вы делаете запрос POST.

В запросе GET дополнительные данные отправляются в строке запроса. Например, URL www.mysite.com?user=david&password=fish отправляет два бита данных «пользователь» и «пароль».

В запросе POST отправляются значения в элементах управления формы (например, в текстовых полях и т. Д.). Это не отображается в адресной строке, но полностью отображается для всех, кто просматривает ваш веб-трафик.

И GET, и POST абсолютно небезопасны, если не используется SSL (например, веб-адреса начинаются с https).

...