Computer finestre Internet

Differenza tra get e post. Utilizzo dei metodi GET e POST. Maggiori informazioni su HTTP

Ciò che hanno in comune è che funzionano allo stesso modo. Non c'è tecnicamente alcuna differenza tra loro. Ma ci sono differenze ideologiche.

Li tratterò nel contesto di PHP. Nota che il protocollo HTTP è indirettamente correlato a PHP perché è stato creato per lo scambio pagine html PHP estende semplicemente le capacità di entrambi.

La richiesta GET viene utilizzata per ricevere dati e POST per inviarli. (Come promemoria, tecnicamente funzionano allo stesso modo).

Pertanto, nel contesto di PHP, sulla base di questa ideologia, hanno fatto quanto segue:
1. Gli array superglobali ($ _GET, $ _POST) vengono creati per impostazione predefinita ogni volta che avvii PHP.
2. Se è presente un punto interrogativo (?) nella stringa di query. Poi tutto quello che conta dopo di lui parametri richiesta GET, vengono presentati nel formato "chiave" = "valore" e il carattere e commerciale (&) viene utilizzato come separatore
Esempio:
GET /index.php?name=Andrey&surname=Galkin
questa è una stringa di query, ci sono 2 parametri. questi parametri finiranno nell'array $ _GET.
3. $ _POST viene compilato in un altro modo. i contenuti di questo array sono popolati dalle "intestazioni di richiesta". Cioè, da un luogo nascosto alla vista in una forma esplicita. Tutta la routine di creazione di tali intestazioni viene rilevata dal browser. Anche se a volte qualcosa viene modificato manualmente nelle intestazioni.

Molto spesso, la richiesta di posta viene utilizzata nei moduli (per l'invio dei dati).

Ad esempio abbiamo un form di login a 2 campi login e password.

Immaginiamo di utilizzare il metodo GET. Quindi, quando invieremo il modulo, andremo al seguente indirizzo /login.php?login=Andrey&password=123, concordiamo che non è affatto sicuro trasferire tali informazioni in questo modo. Chiunque può aprire il tuo browser e iniziando a inserire l'indirizzo del sito, può vedere le tue password e i tuoi accessi dalla cronologia.

Ma se specificassimo utilizzando il metodo POST, riceveremmo la seguente richiesta:
POST /login.php (login = Andrey & password = 123) cosa sarebbe nascosto tra parentesi e non salvato nel browser.

In generale, per riassumere:
GET è ottenere una pagina specifica in un modo specifico (ordinamento, pagina del blog corrente, stringa di ricerca, ecc.).
POST - per l'invio di dati che non influiscono sulla visualizzazione della pagina, nel senso che questi dati influiscono solo sull'esito dell'esecuzione dello script (login, password, numeri di carta di credito, messaggi, ecc.).

E un'altra buona notizia, possono essere combinati, ad esempio
POST /index.php?page=login (login = Andrey & password = 123) Penso di aver già spiegato abbastanza cosa ne verrà fuori e quali parametri verranno inseriti in quale array.

Questo post ha lo scopo di spiegare i principi del trasferimento di dati su Internet utilizzando due metodi principali: GET e POST. L'ho scritto come supplemento alle istruzioni per il generatore di turni per chi è poco interessato ai dettagli ☺.

Vai al seguente indirizzo (questo è per una spiegazione visiva): http://calendarin.net/calendar.php?year=2016 Fai attenzione alla barra degli indirizzi del browser: calendarin.net/calendar.php ? anno = 2016 Viene nominato il file principale, seguito da un punto interrogativo (?) e da un parametro "anno" con un valore di "2016". Quindi, tutto ciò che segue il punto interrogativo è una richiesta GET. È semplice. Per passare più di un parametro, ma diversi, devono essere separati da una e commerciale (&). Esempio: calendarin.net/calendar.php ? anno = 2016 & display = giorni-lavorativi-e-giorni-non-lavorativi

Il file principale è ancora denominato, seguito da un punto interrogativo (?), Quindi - il parametro "year" con il valore "2016", quindi - la e commerciale (&), quindi - il parametro "display" con il valore "work -giorni-e-giorni -off ".

I parametri GET possono essere modificati direttamente in barra degli indirizzi browser. Ad esempio, modificando il valore "2016" in "2017" e premendo il tasto , si passerà al calendario per il 2017.

Si tratta della trasmissione dei dati in modo nascosto (l'indirizzo della pagina non cambia); cioè puoi vedere cosa è stato trasmesso solo con l'aiuto di un programma (script). Ad esempio, nel seguente strumento per il conteggio dei caratteri in un testo, i dati di origine vengono trasmessi utilizzando il metodo POST: http://usefulonlinetools.com/free/character-counter.php

Se avete domande, commenti e la mia e-mail al vostro servizio.

Oltre al metodo GET, di cui abbiamo discusso nel post precedente, esiste un altro metodo per inviare una richiesta tramite il protocollo HTTP: il metodo POST. Anche il metodo POST è molto utilizzato nella pratica.

Se per accedere al server con il metodo GET ci è bastato digitare la richiesta nell'URL, allora nel metodo POST tutto funziona secondo un principio diverso.

Per soddisfare questo tipo di richiesta, dobbiamo fare clic sul pulsante con l'attributo type = "submit", che si trova nella pagina web. Nota che questo pulsante si trova nell'elemento

con l'attributo method impostato su post.

Considera questo HTML:

Inserire il testo:


Se l'utente inserisce del testo nel campo di testo e fa clic sul pulsante "Invia", la variabile di testo con il valore del contenuto inserito dall'utente verrà inviata al server.

Richieste POST e GET in termini semplici

Questa variabile verrà inviata dal metodo POST.

Se scrivi nel modulo in questo modo:

Quindi i dati verranno inviati utilizzando il metodo GET.

Se, nel caso di una richiesta GET, la quantità di dati che potremmo trasferire fosse limitata dalla lunghezza della barra degli indirizzi del browser, allora nel caso di una richiesta POST tale limitazione non esiste e possiamo trasferire quantità significative di informazione.

Un'altra differenza tra il metodo POST e GET, il metodo POST nasconde tutte le variabili e i loro valori passati ad esso nel suo corpo (Entity-Body). Nel caso del metodo GET, sono stati memorizzati nella stringa di richiesta (Request-URI).

Ecco un esempio di richiesta POST:

POST / HTTP / 1.0 \ r \ n
Ospite: www.site.ru \ r \ n
Referente: http://www.site.ru/index.html\r\n
Cookie: reddito = 1 \ r \ n
Tipo di contenuto: application / x-www-form-urlencoded \ r \ n
Contenuto-Lunghezza: 35 \ r \ n
\ r \ n
login = Dima & password = 12345

Pertanto, trasmettendo i dati utilizzando il metodo POST, sarà molto più difficile per un utente malintenzionato intercettarli, perché sono nascosti alla vista, quindi il metodo POST è considerato più sicuro.

Inoltre, il metodo POST può trasferire non solo testo, ma anche dati multimediali (immagini, audio, video). Esiste uno speciale parametro Content-Type che determina il tipo di informazioni che devono essere trasferite.

Infine, la variabile POST viene utilizzata per recuperare i dati trasmessi da questo metodo sul server.

Ecco un esempio di elaborazione in PHP:

echo $ _POST ['testo'];
?>

Nell'ultimo post, abbiamo deciso che il browser (client) invia richieste HTTP al server e il server invia risposte HTTP al client. Tali richieste e risposte vengono elaborate secondo determinate regole. C'è, qualcosa come la sintassi, come e in quale sequenza dovrebbe essere scritta. Ci deve essere una struttura ben definita.

Diamo un'occhiata più da vicino a questa struttura, che viene utilizzata per creare richieste e risposte nel protocollo HTTP.

Una richiesta HTTP è composta da tre parti principali, che arrivano esattamente nell'ordine mostrato di seguito. C'è una riga vuota tra le intestazioni e il corpo del messaggio (come separatore), è un carattere di avanzamento riga.

Stringa vuota (separatore)

Pubblica e ricevi richieste, qual è la differenza tra loro e quale è migliore e per quali scopi?

corpo del messaggio (corpo entità) - parametro opzionale

Stringa della domanda- specifica il metodo di trasmissione, l'URL a cui accedere e la versione del protocollo HTTP.

intestazioni- descrivere il corpo dei messaggi, trasmettere vari parametri e altre informazioni e informazioni.

corpo del messaggio- questi sono i dati stessi, che vengono trasmessi nella richiesta. Il corpo del messaggio è facoltativo e può essere omesso.

Quando riceviamo una richiesta di risposta dal server, il corpo del messaggio è molto spesso il contenuto della pagina web. Ma, quando si effettuano richieste al server, a volte può anche essere presente, ad esempio, quando trasferiamo i dati che abbiamo compilato nel modulo feedback al server.

Più in dettaglio, ogni elemento della richiesta, verrà preso in considerazione nelle note seguenti.

Prendiamo come esempio una richiesta del server reale. Ho evidenziato ogni parte della richiesta con il proprio colore: la riga della richiesta è verde, le intestazioni sono arancioni, il corpo del messaggio è blu.

Richiesta dal browser:

Host: webgyry.info

Cookie: wp-settings

Connessione: keep-alive

Nell'esempio seguente, il corpo del messaggio è già presente.

Risposta del server:

Tipo di contenuto: testo / html; set di caratteri = UTF-8

Codifica di trasferimento: chunked

Connessione: keep-alive

Keep-Alive: timeout = 5

X-Pingback: //webgyry.info/xmlrpc.php

Documento senza titolo

Questi sono i messaggi che vengono scambiati tra il client e il server tramite il protocollo HTTP.

A proposito, vuoi sapere se ha senso in qualche elemento del tuo sito utilizzando gli "obiettivi" di Yandex Metrics e Google Analytics?

Togli ciò che NON funziona, aggiungi ciò che funziona e raddoppia i tuoi profitti.

Un corso sull'impostazione degli obiettivi Yandex Metrica ..

Un corso sull'impostazione degli obiettivi di Google Analytics ..

Il client HTTP invia una richiesta al server sotto forma di messaggio di richiesta, che ha il seguente formato:

  • Stringa richiesta (richiesto)
  • Titolo (elemento facoltativo)
  • Stringa vuota (richiesto)
  • Corpo del messaggio (facoltativo)

Diamo un'occhiata a ciascuno di questi elementi separatamente.

Stringa della domanda

La stringa di richiesta inizia con un token del metodo, seguito dall'URI della richiesta e dalla versione del protocollo. Gli elementi sono separati l'uno dall'altro da spazi:

Consideriamo questo elemento in modo più dettagliato.

Metodo di richiesta

Questo elemento specifica il metodo da chiamare sul lato server sull'URI specificato.

Esistono otto metodi in HTTP:

  • TESTA
    Utilizzato per ottenere la riga di stato e il titolo dal server tramite URI. Non modifica i dati.
  • OTTENERE
    Utilizzato per ricevere dati dal server all'URI specificato. Non modifica i dati.
  • INVIARE
    Utilizzato per inviare dati al server (come informazioni sugli sviluppatori, ecc.) utilizzando moduli HTML.
  • METTERE
    Sostituisce tutti i dati precedenti sulla risorsa con i dati appena caricati.
  • ELIMINA
    Rimuove tutti i dati correnti sulla risorsa specificata dall'URI.
  • COLLEGARE
    Stabilisce una connessione tunnel al server all'URI specificato.
  • OPZIONI
    Descrive le proprietà di connessione per la risorsa specificata.
  • TRACCIA
    Fornisce un messaggio contenente una traccia a ritroso della posizione dell'URI della risorsa specificato.

URI di richiesta

URI (Uniform Resource Identifier) ​​è l'identificatore della risorsa a cui viene inviata la richiesta. Il formato URI più comune è mostrato di seguito:

‘*’ utilizzato quando la richiesta HTTP non è specifica per una risorsa specifica, ma per un server. Utilizzato solo quando non è necessario applicare il metodo alla risorsa. Per esempio,

uri assoluto utilizzato quando viene effettuata una richiesta HTTP a un proxy. Al proxy viene richiesto di passare la richiesta dalla cache disponibile e restituisce una risposta. Per esempio:

asbolutny_path | una fonte usato dalla maggior parte di chatso.

Imparare a lavorare con le richieste GET e POST

È richiesta una risorsa specifica di un server specifico. Ad esempio, un client desidera ottenere una risorsa dal server tramite la porta 80. L'indirizzo della risorsa è "www.proselyte.net" e invia la seguente richiesta:

Richiesta di campi di intestazione

I campi dell'intestazione consentono al cliente di comunicare Informazioni aggiuntive sulla richiesta e su se stesso al server. Questi campi agiscono come modificatori di richiesta.

Di seguito è riportato un elenco dei campi di intestazione più importanti che possono essere utilizzati:

  • Accetta-Charset
  • Accetta-codifica
  • Accetta-Lingua
  • Autorizzazione
  • Aspettarsi
  • If-match
  • Se-Modificato-da
  • Se-nessuno-match
  • Se-Range
  • Se-Non modificato-Da
  • Gamma
  • Referente
  • Agente utente

Se vogliamo implementare il nostro client e il nostro server web, possiamo creare i nostri campi di intestazione.

Esempio di richiesta HTTP

Questo conclude il nostro studio sulle richieste HTTP.
Nel prossimo articolo, esamineremo le risposte HTTP.

Uno dei modi per inviare una richiesta HTTP al server è una richiesta GET. Questo metodo è il più comune e più spesso le richieste al server vengono effettuate utilizzandolo.

Il modo più semplice per creare una richiesta GET è digitare l'URL nella barra degli indirizzi del browser.

Il browser trasmetterà al server le seguenti informazioni:

OTTIENI / HTTP / 1.1
Host: webgyry.info
Agente utente: Mozilla / 5.0 (Windows NT 6.1; rv: 18.0) Gecko / 20100101 Firefox / 18.0
Accetta: text/html, application/xhtml + xml, application/xml; q = 0.9, * / *; q = 0.8
Accetta-Lingua: ru-RU, ru; q = 0,8, en-US; q = 0,5, en; q = 0,3
Accetta-codifica: gzip, deflate
Cookie: wp-settings
Connessione: keep-alive

La richiesta si compone di due parti:

1. linea di richiesta

2.headers (intestazioni dei messaggi)

Tieni presente che la richiesta GET non ha un corpo del messaggio. Ma questo non significa che con il suo aiuto non possiamo trasferire alcuna informazione al server.

Differenza tra i metodi GET e POST

Questo può essere fatto usando parametri GET speciali.

Per aggiungere parametri GET alla richiesta, è necessario inserire un segno "?" alla fine dell'URL. e dopo di esso, inizia a chiedere loro secondo la seguente regola:

nome_parametro1 = valore_parametro1 & nome_parametro2 = valore_parametro2 & ...

Il separatore tra i parametri è il segno "&".

Ad esempio, se vogliamo passare due valori al server, il nome utente e la sua età, allora questo può essere fatto con la seguente riga:

http://site.ru/page.php?name=dima&age=27

Quando fatto richiesta data, i dati entrano nella cosiddetta variabile d'ambiente QUERY_STRING, da cui possono essere recuperati sul server utilizzando il linguaggio di programmazione web lato server.

Ecco un esempio di come questo può essere fatto in PHP.

echo "Il tuo nome:". $ _GET ["nome"]. "
»;
echo "La tua età:". $ _GET ["età"]. "
»;
?>

Il costrutto $ _GET ["nome_parametro"] consente di visualizzare il valore del parametro passato.

Come risultato dell'esecuzione di questo codice nel browser, verrà visualizzato quanto segue:

Il tuo nome: dima
La tua età: 27

facciamo anche una richiesta al server utilizzando il metodo GET.

Potresti aver notato che sulla maggior parte dei siti puoi vedere i seguenti indirizzi:

Http: //site/index.php?Blog = 2

Qui, anche senza conoscere php, puoi intuire che ci riferiamo al file index.php Ma poche persone sanno cosa viene dopo il punto interrogativo. È piuttosto semplice: ?blog = 2 questa è la dichiarazione della variabile globale "$ _GET [" blog "]" con il valore "2". Quindi, passo una variabile allo script che è responsabile della visualizzazione delle informazioni dal database. Scriviamo un piccolo script in cui vedrai chiaramente tutto:

if (isset ($ _ GET ["blog"])) (
echo $ _GET["blog"];
}
?>

Usiamo l'istruzione di condizione if() poiché la condizione è la seguente riga:

Isset ($ _ OTTIENI ["blog"])

isset() ti permette di scoprire se esiste la variabile che è specificata tra parentesi, cioè la condizione che ho descritto nel codice suona così: Se la variabile $ _GET ["blog"] esiste, allora mostra il contenuto di questa variabile sullo schermo. Ecco cosa è successo:

Penso che sia chiaro che si sta creando una variabile globale $ _GET con l'identificatore che abbiamo dichiarato nella barra degli indirizzi ( in questo caso con l'identificatore "blog")

Ora voglio chiarire un punto. Supponiamo di dover dichiarare due variabili, come lo facciamo? La prima variabile viene dichiarata dopo il punto interrogativo "?" La seconda variabile viene dichiarata dopo tale segno "&" ( Ad essere sincero, non so cosa sia questo segno), ecco un esempio di dichiarazione di tre variabili:

Http: //site/index.php? A = 1 & b = 2 & c = 3

Ecco il codice di output:

if (isset ($ _ GET ["a"]) AND isset ($ _ GET ["b"]) AND isset ($ _ GET ["c"])) (
echo $ _GET ["un"]. "
";
echo $ _GET ["b"]. "
";
echo $ _GET ["c"]. "
";
}
?>

La condizione è questa:

Se c'è una variabile globale $ _GET ["a"] e una variabile globale $ _GET ["b"] e una variabile globale $ _GET ["c"] allora visualizzali, ecco il risultato:

Forme

Prima di arrivare a inviare interrogazioni, devi capire cosa sono le forme? Perché è necessario? Perché la variabile globale $ _POST [""] viene creata tramite i moduli. Che cos'è un modulo? Questi sono campi per l'inserimento di qualche tipo di informazione da parte dell'utente. I campi sono in una riga, campi di grandi dimensioni, ci sono anche pulsanti di opzione, caselle di controllo. Sistemiamo tutto in ordine...

Il modulo è un tag:


elementi del modulo

Il modulo ha attributi, elencherò i più comuni:

Creiamo un modulo:


elementi del modulo

Come file gestore, ho messo il file test.php poiché è in esso che scrivo esempi per te. Ho impostato il metodo di invio della posta in quanto questi metodi vengono utilizzati nel 99,9% dei casi. Ho anche dato un nome al nostro modulo - modulo

Ora tuffiamoci nel mondo degli elementi del modulo. La prima cosa che devi capire è che quasi tutti gli elementi sono tag. l'unica differenza è nell'attributo genere a questi tag. Permettetemi di elencare gli elementi del modulo utilizzati:

Sono sicuro che hai visto questi campi più di una volta, quindi qui, come si suol dire: "nessun commento"

Ora mettiamo insieme un breve questionario di formazione con cui lavoreremo in seguito. Il nostro compito è comporre un piccolo questionario che ci dirà il nome della persona che ha compilato, il sesso, il paese di provenienza, il suo colore preferito e un campo di testo dove l'utente può aggiungere qualcosa su di sé. Questo è quello che ho fatto:

Il tuo cognome Nome patronimico:

Qual è il tuo genere:
m
F

Da che paese vieni



Colore/i preferito/i:

Nero:
Rosso:
Bianco:
Un altro:

Su di me:




Nota che quasi ogni tag ha un attributo valore, cosa serve? Registra i dati che stai per trasferire su un'altra pagina. spero sia chiaro

Ora, se eseguiamo questo codice in un browser, vedremo quanto segue:

Ho usato l'attributo per il modulo azione con il significato test.php questo significa, come ho detto, i dati del form verranno passati al file test.php.

POST richiesta

Ora scriviamo il codice php che ci permetterà di vedere le informazioni che abbiamo inserito. Dove sono archiviati i dati? Nel caso della richiesta get, i nostri dati sono stati memorizzati nella variabile globale $ _GET [""]. Quando viene effettuata una richiesta di post, i dati saranno nella variabile globale $ _POST [""]. V parentesi quadre, è necessario registrare, come nel caso della variabile globale get, l'identificatore. La domanda è: dove posso ottenere questo identificatore? Ecco perché abbiamo bisogno dell'attributo name sugli elementi del modulo! Sono questi nomi che servono come chiave per noi in matrice globale inviare. Bene, iniziamo a descrivere lo script:

if (isset ($ _ POST ["invia"])) (
echo "Nome:". $ _ POST ["fio"]. "
";
echo "Sesso:". $ _ POST ["sesso"]. "
";
echo "Paese di residenza:". $ _ POST ["città"]. "
";

Echo "Colore/i preferito/i:
";
echo $ _POST ["colore_1"]. "
";
echo $ _POST ["colore_2"]. "
";
echo $ _POST ["colore_3"]. "
";
echo $ _POST ["colore_4"]. "
";
echo "Su di me:". $ _ POST ["su di me"]. "


";
}
?>

La condizione if che abbiamo scritto dice: Se c'è una variabile globale $ _POST ["submit"], allora visualizziamo i dati sullo schermo. Questa variabile globale viene creata se abbiamo fatto clic sul pulsante di invio, ecco perché in questo esempio l'attributo name è obbligatorio nel pulsante. Ti starai chiedendo perché l'attributo name è facoltativo per il pulsante? È piuttosto semplice. Di solito il programmatore non tiene traccia della pressione del pulsante, ma tiene traccia dei dati inviati. Per lavoro corretto, ad esempio, i moduli di contatto, è necessario tenere traccia non della pressione di un pulsante, ma della correttezza dell'inserimento delle informazioni e scoprire se queste informazioni sono state inserite. Nel nostro esempio, non abbiamo controllato i dati inviati, ma abbiamo semplicemente tracciato il clic del pulsante, per semplificare l'esempio... Ecco cosa abbiamo ottenuto:

Conclusione

Bene, oggi abbiamo analizzato due metodi per trasferire i dati tra gli script, così come il galoppo fatto conoscenza con i moduli. Spero davvero che queste informazioni ti siano utili almeno da qualche parte. Se hai domande o pensieri, scrivi commenti. Buona fortuna, ho tutto per oggi!

P.S.: Ti piacerebbe giochi per computer diventare ancora più realistico? Directx 11 per Windows 7 può essere scaricato gratuitamente su Windows in! Goditi una grafica fantastica!

Ci sono due concetti comuni a quasi tutti i programmi: l'elaborazione dei dati di input e l'output dei risultati. In questa pagina, ci concentreremo sulla gestione dell'input dei programmi CGI. Innanzitutto, da dove proviene l'input e, in secondo luogo, come viene passato l'input al server. Per scrivere programmi CGI efficaci, devi avere una chiara comprensione di queste cose.

Un po' di HTTP

Il server accetta tre tipi di richieste: GET, POST e HEAD. La richiesta del programma al server web si presenta così:

GET /index.html HTTP / 1.0

La prima parte, in questo caso GET, è il metodo di richiesta, la seconda, index.html, è l'URL richiesto e la terza, HTTP/1.0, è il protocollo utilizzato dal client.

I due principali metodi di richiesta sono GET e POST. Questi sono gli stessi metodi disponibili per la creazione di un modulo. Il metodo HEAD viene utilizzato raramente dal browser perché richiede solo l'intestazione della risposta e in questo caso il corpo della risposta non viene inviato. Ad esempio, per verificare se la pagina è cambiata, il browser potrebbe richiedere un'intestazione, ma questa non genera una comunicazione completa.

Metodo GET

Per impostazione predefinita, la richiesta utilizza il metodo GET. Il metodo POST viene utilizzato solo quando specificato esplicitamente nella richiesta del modulo. È molto importante per un programmatore CGI capire che quando viene effettuata una richiesta GET, i dati del modulo vengono inviati al server insieme all'URL. I server Web che supportano CGI copiano questi dati in una variabile di ambiente denominata QUERY_STRING. Successivamente, il programma CGI è responsabile dell'acquisizione dei dati dalla variabile di ambiente e dell'elaborazione.

L'URL con la stringa di query ha il seguente aspetto:

Http://www.domen-name.com/login.pl?nick=maks&psw=parol

Cartello? separa la stringa di query dall'URL effettivo della risorsa; nick e psw sono variabili passate al server, maks e parol sono i loro valori, rispettivamente.

Metodo POST

Il metodo POST viene utilizzato quando specificato in modo esplicito nell'attributo METHOD del modulo. A differenza del metodo GET, POST non inserisce i dati nell'URL, ma nel corpo della richiesta. Una richiesta POST è molto simile a una risposta HTTP. La prima riga è una richiesta HTTP standard che specifica il metodo POST. Può contenere le intestazioni aggiuntive necessarie, separate dal corpo della richiesta da una riga vuota.

Quando si utilizza il metodo POST, il corpo della richiesta viene passato al programma come input standard.

Scegliere tra GET e POST

È chiaro che durante lo sviluppo di moduli, un programmatore CGI dovrà affrontare la domanda su quale di questi metodi utilizzare. Nella maggior parte dei casi, entrambi i metodi funzioneranno ed entrambi funzioneranno bene. Tuttavia, ci sono situazioni in cui l'uso di un metodo o di un altro offre determinati vantaggi.

Diamo un'occhiata ad alcune situazioni in cui ha senso preferire il metodo GET o POST.

  • Se vuoi che il tuo programma venga chiamato per riferimento, il metodo GET dovrebbe essere preferito.
  • Se non si desidera che gli argomenti passati al programma vengano scritti nel file di registro del server, utilizzare il metodo POST. Ad esempio, se un modulo richiede un nome utente e una password, probabilmente non si desidera che i nomi e le password vengano salvati nel file di report. Inoltre, non è consigliabile passare la password come parte dell'URL.
  • Se il tuo modulo ha dimensioni significative, ad esempio ha caselle di testo con note e commenti, dovresti usare il metodo POST. In generale, anche in questo caso puoi utilizzare il metodo GET, ma potresti riscontrare restrizioni sulla dimensione dell'URL che sono diverse per i diversi sistemi operativi e browser (limitati dalla dimensione delle variabili di ambiente). È più facile usare il metodo POST.
  • Se il tuo modulo contiene un campo file, usa il metodo POST. Inoltre, in questo caso, è necessario impostare il valore dell'attributo ENCTYPE su multipart / form-data.

Descrizione

L'attributo method comunica al server il metodo della richiesta.

Sintassi

...

I valori

Il valore dell'attributo del metodo non distingue tra maiuscole e minuscole. Ci sono due metodi: ottieni e pubblica.

Ottieni Questo metodo è uno dei più comuni ed è progettato per ottenere le informazioni richieste e trasferire i dati nella barra degli indirizzi. Le coppie "nome = valore" in questo caso vengono aggiunte all'indirizzo dopo il punto interrogativo e separate da una e commerciale (il simbolo &). La comodità dell'utilizzo del metodo get risiede nel fatto che l'indirizzo con tutti i parametri può essere utilizzato ripetutamente, salvandolo, ad esempio, nei segnalibri del browser e modificando anche i valori dei parametri direttamente nella barra degli indirizzi. post Il metodo post invia i dati al server in una richiesta del browser. Ciò consente di inviare più dati di quelli disponibili per il metodo get perché ha un limite di 4K. Grandi quantità di dati vengono utilizzate in forum, servizi postali, popolamenti di database, trasferimenti di file, ecc.

Attributo richiesto

Valore predefinito

HTML5 IE Cr Op Sa Fx

Tag FORM, attributo del metodo