HTTP ha diversi verbi , che hanno una semantica diversa:
- GET: non cambia nulla lato server, più GET con gli stessi parametri dovrebbe ottenere la stessa risposta - in genere ottiene un valore dell'account
- POST: puoi apportare modifiche al lato server, più POST con gli stessi parametri può portare a risultati e risposte diversi - in genere aggiungi un importo a un account
- PUT: puoi apportare modifiche lato server, più PUT con gli stessi parametri dovrebbe portare a stesso risultato e risposta - in genere impostare un valore dell'account
esistono anche DELETE e HEAD, ma non penso che vogliate usarli qui.
Poiché il POST non è idempotente, il browser principale ti avviserà se invii due volte la stessa richiesta POST che non è desiderabile in casi di utilizzo GET .
Ad ogni modo, intestazioni nella richiesta HTTP controlla dove la risposta deve essere memorizzata nella cache o no, quindi è possibile chiedere alle cache di non mantenere le risposte alle richieste GET.
Infine, la memorizzazione nella cache (nel senso di proxy di memorizzazione nella cache) non è correlata alla sicurezza. Se non vuoi che qualcuno spazzi le tue richieste e le tue risposte, non dovresti preoccuparti della memorizzazione nella cache, ma usa HTTPS per assicurarti che tutto sia crittografato correttamente.
Il caching del browser è una domanda diversa, perché quindi è possibile memorizzare gli ultimi URL nella cache della cronologia. Pertanto, le informazioni sensibili non devono essere inviate nell'URL , a meno che tu non pulisca costantemente la cronologia quando chiudi il browser e chiudi il browser quando hai finito di esplorare un sito. Ma gli URL inviati e inviati in una richiesta GET sono domande diverse. L'autenticazione di base HTTP consente di trasmettere le credenziali nelle intestazioni HTTP di una richiesta GET, che è sicura. E l'autenticazione del modulo di accesso è una richiesta non idempotent (lo stato dopo e prima dell'autenticazione non è la stessa) quindi deve essere una richiesta POST per semantica HTTP.
TL / DR: il problema non è nella richiesta GET vs POST. Le regole per la riservatezza sono:
- usa sempre HTTPS
- non passare mai dati sensibili nell'URL.