Существует два распространенных значения "безопасности" при использовании GET. Поскольку данные отображаются в строке URL-адреса, возможно, кто-то, глядя через плечо на адресную строку / URL-адрес, может просмотреть что-то, к чему он не должен быть привязан, например, файл cookie сеанса, который потенциально может быть использован для захвата вашего сеанса. Имейте в виду, каждый имеет телефоны с камерой.
Другое значение безопасности GET связано с тем, что переменные GET регистрируются на большинстве веб-серверов, которые получают доступ к журналу как часть запрашиваемого URL-адреса. В зависимости от ситуации, нормативного климата и общей чувствительности данных это может вызвать опасения.
Некоторые клиенты / брандмауэры / системы IDS могут не одобрять запросы GET, содержащие чрезмерный объем данных, и, следовательно, могут давать ненадежные результаты.
POST поддерживает расширенную функциональность, такую как поддержка двоичного ввода из нескольких частей, используемого для загрузки файлов на веб-серверы.
POST требует заголовок длины содержимого, который может увеличить сложность реализации клиента для конкретного приложения, так как размер передаваемых данных должен быть известен заранее, чтобы клиентский запрос не формировался в инкрементном инкрементном режиме. Возможно, это небольшая проблема для тех, кто предпочитает злоупотреблять HTTP, используя его как транспорт RPC (удаленный вызов процедур).
Другие уже проделали хорошую работу по освещению семантических различий и части «когда» этого вопроса.