Qual è la differenza tra HTTP GET e HTTP POST?

September 12

Qual è la differenza tra HTTP GET e HTTP POST?


Quando si invia una forma, uno dei due metodi è utilizzato dietro le quinte per trasmettere i dati che del modulo a qualsiasi pagina Web o il codice è progettato per leggerlo. A seconda delle circostanze, il metodo sarà GET o POST. Entrambi possono essere utilizzati per gestire lo stesso tipo di dati, ma ci sono chiare differenze e importanti tra GET e POST. Per motivi di praticità, facilità d'uso e la sicurezza, ogni situazione richiede in genere per un tipo specifico di modulo di richiesta.

GET contro POST

A rigor di termini, la differenza tra GET e POST risiede nel modo in cui le richieste vengono trasferiti. Ottenere informazioni viene trasmessa nell'URL. Se hai mai visto un URL che includeva punti interrogativi e segni &, sono state guardando una richiesta GET: example.com/request.php?var1=foo&var2=bar è una stringa GET che codifica la variabile "var1" come "foo var2 "e la variabile" "come" bar ". informazioni POST è incluso nel corpo della richiesta, e non è visibile nella stringa URL (e, quindi, non visibile all'utente).

Linee guida formali

Formalmente, le linee guida HTML dicono che GET dovrebbe essere utilizzato per le richieste "idempotenti", o le richieste che non cambiano nulla. Per esempio, immaginate una pagina Web che ha restituito il meteo locale: "example.com/weather.php?zipcode=12345". L'atto di presentare tale richiesta più e più volte non cambia nulla. POST dovrebbe essere utilizzato per le richieste che non sono idempotente. Per esempio, supponiamo si stavano facendo un acquisto con carta di credito. Invio la richiesta più e più volte potrebbe portare ad alcuni piuttosto grandi cambiamenti. Perché inviare nuovamente una richiesta POST ha conseguenze (anche se sono minori), browser web di solito apparire una richiesta di all'utente di confermare che in realtà vogliono ripresentare la query modulo.

Vantaggi di GET

GET ha una serie di vantaggi rispetto POST. Perché GET è codificato come parte di un URL, è possibile tagliare e incollare l'URL e condividere con essa altre persone. GET richieste possono anche essere segnalibro. Se si controlla regolarmente il vostro tempo, è possibile aggiungere "example.com/weather.php?zipcode=12345" a barra "preferiti" del browser, in modo che cliccando su quel link carica automaticamente la vostra pagina del tempo personalizzata. Poiché le richieste GET sono visibili (e modificabili) dall'utente, possono anche essere manipolati. Per esempio, se il sito meteo non offriva un modo ovvio per modificare la posizione della richiesta tempo, si potrebbe cambiare "12345" per "99762" manualmente a guardare il tempo in Nome, Alaska al posto del tempo a Schenectady.

Quando utilizzare POST

Anche in situazioni che sono idempotente, POST ha usi chiari occasionali. Alcuni di questi si basano sulla sicurezza o la legalità. GET variabili sono trasmessi "in chiaro", in modo che non si desidera inviare informazioni della carta di credito, numeri di previdenza sociale, password o dati sensibili degli utenti tramite GET. Poiché i dati POST è oscurata, è preferibile in quelle situazioni. POST è utilizzato anche per la trasmissione di grandi quantità di dati, anche se i dati non è sensibile. Tecnicamente, gli URL (e quindi ottenere le variabili) possono essere di lunghezza illimitata. Ma poiché molti browser limitano la quantità di spazio di un URL può richiedere fino, GET è solitamente considerato adatto solo per le richieste relativamente brevi.