GET (та кілька інших методів) визначені як "БЕЗКОШТОВНИЙ" у специфікації http ( RFC 2616 ):
9.1.1 Безпечні методи
Виконавці повинні усвідомлювати, що програмне забезпечення представляє користувача у взаємодії через Інтернет, і повинні бути обережними, щоб користувач усвідомлював будь-які дії, які вони можуть вчинити, які можуть мати несподіване значення для себе та інших.
Зокрема, було встановлено, що методи GET і HEAD НЕ повинні мати значення для вжиття інших дій, ніж пошук. Ці методи слід вважати "безпечними". Це дозволяє користувачам-агентам представляти інші методи, такі як POST, PUT та DELETE, спеціальним чином, щоб користувач ознайомився з тим, що вимагається можлива небезпечна дія.
Природно, неможливо забезпечити, щоб сервер не генерував побічні ефекти в результаті виконання запиту GET; насправді деякі динамічні ресурси вважають цю особливість. Тут важливим є те, що користувач не вимагає побічних ефектів, тому не може бути відповідальним за них.
Це означає, що запит GET ніколи не повинен мати серйозних наслідків для користувача, крім того, щоб побачити те, що вони можуть не хотіти бачити, але POST-запит може змінити важливий для них ресурс або для інших людей.
Хоча це змінилося в JavaScript, традиційно існували різні інтерфейси користувача - користувачі могли запускати GET-запити, натискаючи посилання, але доведеться заповнити форму, щоб викликати POST-запит. Я думаю, що дизайнери HTTP прагнули зберегти відмінність між безпечними та небезпечними методами.
Я також не думаю, що коли-небудь слід перенаправлятись на пошту. Будь-яку дію, яку потрібно здійснити, можливо, можна здійснити за допомогою виклику функції в коді на стороні сервера, або якщо це потрібно зробити на іншому сервері, а не надсилати перенаправлення, що містить URL-адресу браузера на POST, на сервер може сам подати запит на цей сервер, діючи як проксі для користувача.