POST предпочтительней, если информация, передаваемая в запросе, будет использоваться для создания, изменения или удаления данных на сервере. Это гарантирует, что пользователь не сможет случайно повторить действие, обновив страницу в браузере.
GET, напротив, принято использовать в тех запросах, которые не будут порождать изменения данных. К тому же, этот метод уместен, если пользователь захочет ещё раз посмотреть (или показать другому пользователю) страницу, которая открывалась по его адресу. Тогда он может просто скопировать себе ссылку и вполне логично ожидать от неё тот же результат, что и прошлый раз.
Метод POST безопасней, чем GET, потому что Вы не засветите никакой информации в URL. Самое бредовая идея применять метод GET — для передачи данных из формы, которая содержит конфиденциальные данные, как имена, фамилии, логины и пароли. К примеру, многие (если не все) провайдеры ведут статистику посещения сайтов абонентов. У некоторых провайдеров даже есть такая услуга, как предоставление этой статистики. При необходимости, отловить эти конфиденциальные данные будет очень просто. Учтите, что я не утверждаю, что POST абсолютно безопасный и его нельзя перехватить. Я лишь говорю, что GET на практике — менее безопасный.
Ну и последнее — методом POST можно передать намного больше информации. И хотя некоторые браузеры способны работать с URL-адресами размером в сотни тысяч символов (сотни килобайт данных), ориентироваться приходится на самых слабых, таких как Internet Explorer, максимальная длина адреса составляет всего 2048 символов. Размер данных GET теоретически неограничен для любых браузеров.