Domanda

Sono nuovo nella programmazione web e sono solo curioso di conoscere i metodi GET e POST per inviare dati da una pagina all'altra.

Si dice che il metodo GET sia più veloce di POST ma non so perché. Un motivo che ho potuto scoprire è che GET può contenere solo 255 caratteri? C'è qualche altro motivo? Per favore qualcuno mi spieghi.

È stato utile?

Soluzione

Non si tratta molto di velocità. Ci sono molti casi in cui il POST è più applicabile. Ad esempio, i motori di ricerca indicizzeranno GET URL e i browser potranno aggiungerli ai segnalibri e mostrarli nella cronologia. Di conseguenza, se si intraprendono azioni come la modifica di un DB basato su una richiesta GET, potrebbe essere dannoso poiché alcuni bot potrebbero anche attraversare l'URL.

L'altro caso può essere un problema di sicurezza. Se pubblichi le credenziali utilizzando GET, verranno elencate nella cronologia del browser e nei file di registro del server.

Altri suggerimenti

Un'altra cosa su http post è che possono essere 2 chiamate quando si utilizza l'intestazione http Expect: 100-Continue . Il primo browser invia le intestazioni dei post http e le risposte del server con & # 8220; HTTP 100 Continua & # 8221 ;. Quando il browser lo riceve, invia il corpo reale.

http://omaralzabir.com/atlas_2__http_post_is_s_s_fa

Penso che questa sia la risposta che l'autore stava cercando.

Guardando il protocollo http, POST o GET dovrebbero essere ugualmente facili e veloci da analizzare. Direi che non c'è differenza di prestazioni.

Dai un'occhiata alle intestazioni HTTP non elaborate

http OTTIENI

GET /index.html?userid=joe&password=guessme HTTP/1.1
Host: www.mysite.com
User-Agent: Mozilla/4.0

POST http

POST /login.jsp HTTP/1.1
Host: www.mysite.com
User-Agent: Mozilla/4.0
Content-Length: 27
Content-Type: application/x-www-form-urlencoded

userid=joe&password=guessme

Dal mio punto di vista, le prestazioni non dovrebbero essere prese in considerazione quando si confrontano GET e POST.

Dovresti pensare a OTTENERE come "un posto dove andare", e POST come "fare qualcosa". Ad esempio, un modulo di ricerca deve essere inviato utilizzando GET perché la pagina dei risultati di ricerca è un "posto" e l'utente vorrà aggiungerlo ai segnalibri o recuperarlo dalla cronologia in un secondo momento. Se si invia il modulo tramite POST, l'utente può ricreare la pagina solo inviando nuovamente il modulo. D'altra parte, se dovessi eseguire un'azione come fare clic su un pulsante Elimina, non vorresti inviarlo con GET, poiché l'azione sarebbe ripetuta ogni volta che l'utente tornava all'URL.

Solo i miei pochi centesimi dal 2016.

Sto creando un semplice sistema di messaggi. Inizialmente ho usato POST per ricevere nuovi avvisi. In jQuery ho avuto:

$.post('/a/alerts', 'stamp=' + STAMP, function(result)
{
});

E in PHP ho usato $ _POST ['stamp']. Anche da localhost ho ricevuto 90-100 ms per ogni richiesta come questa. Ho semplicemente cambiato:

$.get('/a/alerts?stamp=' + STAMP, function(result)
{
});

e in PHP sono passati a $ _GET ['stamp']. Quindi un po 'meno di 1 minuto di modifiche. Ora ogni richiesta impiega 30-40 ms .

Quindi OTTIENI può essere due volte più veloce di POST . Ovviamente non sempre, ma per piccole quantità di dati ottengo sempre gli stessi risultati.

OTTIENI è leggermente più veloce perché i valori vengono inviati nella intestazione a differenza del POST i valori vengono inviati nella richiesta corpo , nel formato specificato dal tipo di contenuto.

Di solito il tipo di contenuto è application / x-www-form-urlencoded, quindi il corpo della richiesta utilizza lo stesso formato della stringa di query:

parametro = valore & amp; = anche un altro Quando si utilizza un caricamento di file nel modulo, si utilizza invece la codifica multipart / form-data, che ha un formato diverso. È più complicato.

Sono d'accordo con altre risposte, ma non è stato menzionato che le richieste GET possono essere memorizzate nella cache mentre le richieste POST non vengono mai memorizzate nella cache. Penso che questo sia il motivo principale per cui alcune richieste GET vengono eseguite più rapidamente. (Ovviamente ciò significa che a volte nessuna richiesta viene effettivamente inviata. Quindi non è in realtà la richiesta GET che è più veloce, ma la cache del browser.)

Metodi HTTP: GET vs. POST: http://www.w3schools.com/tags/ ref_httpmethods.asp

POST farà crescere di più le tue intestazioni, solo aumentandole, ma la differenza dovrebbe essere davvero trascurabile, quindi non vedo perché questo dovrebbe essere un problema.

Basta tenere presente che il modo corretto di parlare HTTP è usare GET solo per le azioni e POST per i dati. Non è necessario, ma non si desidera avere un caso in cui i bot di Google possano, ad esempio, inserire, eliminare o manipolare dati che solo un essere umano avrebbe dovuto gestire semplicemente perché sta seguendo i collegamenti che trova .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top