GET (e alcuni altri metodi) sono definiti come "SICURO" nelle specifiche http ( RFC 2616 ):
9.1.1 Safe Methods
Implementors should be aware that the software represents the user in
their interactions over the Internet, and should be careful to allow
the user to be aware of any actions they might take which may have an
unexpected significance to themselves or others.
In particular, the convention has been established that the GET and
HEAD methods SHOULD NOT have the significance of taking an action
other than retrieval. These methods ought to be considered "safe".
This allows user agents to represent other methods, such as POST, PUT
and DELETE, in a special way, so that the user is made aware of the
fact that a possibly unsafe action is being requested.
Naturally, it is not possible to ensure that the server does not
generate side-effects as a result of performing a GET request; in
fact, some dynamic resources consider that a feature. The important
distinction here is that the user did not request the side-effects, so
therefore cannot be held accountable for them.
Ciò significa che una richiesta GET non dovrebbe mai avere conseguenze gravi per l'utente, oltre a vedere qualcosa che potrebbe non voler vedere, ma una richiesta POST potrebbe cambiare una risorsa che è importante per loro o per altre persone.
Sebbene ciò sia cambiato con JavaScript, tradizionalmente c'erano diverse interfacce utente: gli utenti potevano attivare le richieste GET facendo clic sui collegamenti, ma dovevano compilare un modulo per attivare una richiesta POST. Penso che i progettisti di HTTP volessero mantenere la distinzione tra metodi sicuri e non sicuri.
Inoltre, non penso che dovrebbe mai essere necessario reindirizzare a un POST. Ogni azione che deve essere eseguita può presumibilmente essere eseguita chiamando una funzione all'interno del codice lato server, o se deve avvenire su un server diverso, invece di inviare un reindirizzamento contenente un URL per il POST al server, il server potrebbe fare una richiesta a quel server stesso, comportandosi come un proxy per l'utente.