Ответ 1
Поскольку метод HTTP GET указан как idempotent, запрос GET по спецификации может быть повторно представлен с предположением, что он ничего не изменит на сервере. Это не относится к HTTP POST, который по спецификации может изменять статус приложения, запущенного на сервере.
Таким образом, по спецификации, можно выполнить HTTP GET против страницы N количество раз, не беспокоясь о том, чтобы изменить свой статус.
Несоблюдение спецификации может иметь различные нежелательные результаты. Например, веб-сканеры следуют через GET-запрос для индексации сайта, но не POST. Если вы разрешили HTTP GET-запрос вносить изменения в базу данных, вы можете легко понять нежелательную импликацию, которую он может иметь.
Уважение спецификации соответствует соблюдению соглашения между вашим сервисом или веб-сайтом и множеством разных потребителей, которые могут быть обычными браузерами пользователей, а также другими службами, такими как веб-сканеры.
Вы можете создать сайт, который использует GET для вставки записи, но вы также должны ожидать, что все, что строится вокруг, чтобы потреблять ваш сайт, работает с предположением, что вы соблюдаете соглашение.
В качестве последнего примера веб-браузеры предупреждают пользователей, когда они пытаются обновить страницу, которая была достигнута запросом HTTP POST, предупреждающим, что некоторые данные могут быть повторно отправлены. Вы не получаете этот уровень защиты встроенных браузеров, если страница достигнута запросом HTTP GET.
Вы можете прочитать больше здесь: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html