2009-09-03 13 views
21

Quali sono i punti di forza di GET su POST e viceversa quando si crea una richiesta Ajax? Come faccio a sapere quale dovrei usare in un dato momento? È una decisione orientata alla sicurezza?Richieste GET vs POST ajax: quando e come utilizzare?

Inoltre, qual è la differenza nel modo in cui vengono effettivamente inviati?

+0

Eventuali duplicati: http://stackoverflow.com/questions/715335/get-vs-post-in-ajax – trante

risposta

17

Le richieste POST sono richieste che non si desidera accidentalmente verificarsi. Le richieste GET sono le richieste che stai facendo accadere da un utente che punta un browser a tramite un URL.

Le richieste GET possono essere ripetute semplicemente perché i loro dati si basano sull'URL stesso.

Si dovrebbe pensare a richieste AJAX come pensi di richieste regolari di forma (e la loro GET e POST)

+0

modo per essere sicuri, se le pagine arent tipicamente pagine destinate ad essere navigato a, Dovrei semplicemente scegliere POST? – johnnietheblack

+2

Con cose che cancellano in particolare. –

24

ottiene dovrebbe essere utilizzato per idempotent operazioni, cioè le operazioni che possono essere ripetute in modo sicuro più di una volta senza cambiare nulla . I browser memorizzano nella cache richieste GET (per richieste normali e AJAX)

I POST dovrebbero essere generalmente utilizzati per operazioni non idenpotenti, come il salvataggio di qualcosa. Sebbene tu possa usarli per altre operazioni se vuoi.

I dati per GET vengono inviati tramite la stringa di query URL. I dati per i POST vengono inviati separatamente. Alcuni browser hanno una lunghezza massima dell'URL (penso che Internet Explorer sia 2048 caratteri) e se la stringa della query diventa troppo lunga si otterrà un errore.

22

È necessario utilizzare le richieste GET e POST nelle chiamate AJAX proprio come si utilizzano le richieste GET e POST nelle chiamate normali. Regola approssimativa di base:

La richiesta modificherà qualcosa nel modello?

  • SI: La richiesta modificherà (aggiungere/aggiornare/cancellare) i dati dal vostro archivio dati, o in qualche altro modo cambiare lo stato della creazione del server (causa di un file, ad esempio). Usa POST.
  • La richiesta non influisce sullo stato di alcunché (database, file system, sessioni, ...) sul server, ma si limita a recuperare le informazioni. Utilizzare GET.
3

Yahoo! Il team di posta ha scoperto che quando si utilizza XMLHttpRequest, POST viene implementato nei browser come un processo a due fasi: l'invio delle intestazioni prima, quindi l'invio dei dati. Quindi è meglio usare GET, che richiede solo un pacchetto TCP da inviare (a meno che tu non abbia molti cookie). La lunghezza massima dell'URL in IE è 2K, quindi se invii più di 2K dati potresti non essere in grado di utilizzare GET.

http://developer.yahoo.com/performance/rules.html#ajax_get

Problemi correlati