Perché non possiamo usare il metodo POST per tutte le richieste? [chiuso]

-1

È noto che le informazioni sensibili non devono essere trasmesse nelle richieste GET poiché le richieste GET saranno memorizzate nella cache e il POST dovrebbe essere usato.

  • Perché non è possibile utilizzare il metodo POST per tutte le richieste e ignorando la richiesta GET?

  • Quali sono tutte le difficoltà / barriere che dovremo affrontare se ignoriamo il metodo GET e iniziamo ad usare esclusivamente il POST?

posta jey 21.03.2017 - 07:52
fonte

3 risposte

5

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.
risposta data 21.03.2017 - 08:15
fonte
1

Il tuo problema principale è che se provi a ricaricare una pagina inviata da una richiesta POST, in genere il browser visualizza un avvertimento che potrebbe fare qualcosa due volte. Questo non è ciò che vuoi accadere nella maggior parte delle pagine che utilizzano le richieste GET.

    
risposta data 21.03.2017 - 07:57
fonte
-1

In pratica, GET viene considerato come una richiesta per alcune operazioni o dati,

i dati inviati tramite GET sono considerati come un parametro

se hai un'applicazione per blog e quando richiedi un post specifico potresti dover utilizzare get

www.mysite.com/myblogapp?post=12,

ora il tuo indirizzo del browser è aggiornato puoi condividere l'url per quel post del blog,  oppure usa il pulsante indietro per caricare l'ultimo post del blog visitato (che non è possibile con il metodo post)

Il POST viene utilizzato per inviare grandi quantità di dati, come dati di moduli, file caricati ecc.

    
risposta data 21.03.2017 - 09:51
fonte

Leggi altre domande sui tag