Come configurare smartphone e PC. Portale informativo
  • casa
  • notizia
  • Richieste HTTP GET, POST e PUT. Imparare a lavorare con le richieste GET e POST

Richieste HTTP GET, POST e PUT. Imparare a lavorare con le richieste GET e POST

L'uso dei metodi GET e POST in PHP è difficile da sopravvalutare, poiché questi metodi si trovano su quasi tutti i siti. Prima di studiare il materiale descritto di seguito, ti consiglio di familiarizzare con il tag html

... Diamo un'occhiata a ciascuno di questi metodi in dettaglio.

Metodo GET

Il metodo GET utilizza una stringa URL per passare i dati. Potresti aver notato URL lunghi e oscuri. Ad esempio: function.php?login = Alex & email = dezyakin... In questo caso, i dati vengono elaborati in function.php. Dopo il punto interrogativo "?" C'è un'enumerazione dei parametri trasmessi (il parametro è separato dal segno "&") con i valori: al parametro login viene assegnato il valore Alex e la variabile email è dezyakin. I dati verranno archiviati nell'array superglobale $ _GET. Di seguito viene presentato un esempio di utilizzo del metodo GET:

Login: E-mail: Utilizzando l'array superglobale $ _GET, mostriamo i valori accettati:* / eco "
login = ". $ _GET [" login "]; echo"
email = ". $ _GET [" email "];?>

Nota come leggiamo i valori dall'array superglobale $ _GET: $ _GET ["nome_variabile"]... Nel nostro esempio, i nomi delle variabili sono stati dichiarati nel modulo (nome = login e nome = email).

Consigli:
Prima di elaborare i valori ricevuti, ti consiglio di verificarne l'esistenza tramite le funzioni isset (nome_variabile) o vuoto (nome_variabile)- queste funzioni sono state trattate nella precedente lezione 2: variabili in PHP. Ad esempio:

verifica dell'esistenza con isset: if isset ($ _GET ["login"]) ( operatori per gestire il login ... } //o controlla l'esistenza usando vuoto: se vuoto ($ _GET ["email"]) ( operatori per il trattamento della posta elettronica ... } ?>

Nel modulo è possibile specificare il nome del file che elaborerà i valori passati. Questo viene fatto usando l'attributo action del form, a cui può essere assegnato l'indirizzo di questo file. Per impostazione predefinita, questo file viene assegnato al file corrente (ovvero elaborato nel file in cui si trova il modulo). Ecco un esempio in cui i dati di un modulo vengono inviati per l'elaborazione al file srcipt.php:

Login: E-mail:

Il file script.php deve contenere un qualche tipo di gestore di informazioni, altrimenti le informazioni verranno passate a vuoto.

Il metodo GET presenta molti svantaggi:

  • L'utente vede i valori dei parametri passati;
  • L'utente può facilmente falsificare i parametri trasmessi;
  • Trasmissione scomoda di informazioni binarie (devi codificare in formato testo);
  • La quantità di dati trasferiti è limitata - 8 Kbyte;

A causa degli svantaggi di cui sopra, il metodo GET viene utilizzato solo nei casi in cui è necessario trasferire una piccola quantità di dati e questi dati non sono in alcun modo segreti.

Metodo POST

Il metodo POST differisce da GET in quanto i dati vengono trasmessi in forma chiusa. C'è un array superglobale $ _POST da cui puoi leggere dati come questo: $ _POST ["nome_variabile"]... Ad esempio:

Login: "> E-mail: ">
Usando l'array superglobale $ _POST, stampa i valori accettati:* / eco "
login = ". $ _POST [" login "]; echo"
email = ". $ _POST [" email "];?>

Il risultato dell'esecuzione del codice sopra descritto è mostrato nella figura seguente:

Come puoi vedere, l'URL non ha postscript, ma i dati sono stati comunque ricevuti e visualizzati.

Nota:
1) Il volume dei valori trasmessi dal metodo POST è limitato per impostazione predefinita ed è pari a 8 MB. Per aumentare questo valore, è necessario modificare la direttiva post_max_size in php.ini.

2) Nelle versioni precedenti di PHP, invece dei nomi brevi degli array superglobali $ _GET e $ _POST, venivano utilizzati nomi più lunghi: $ HTTP_GET_VARS e $ HTTP_POST_VARS. Sono disabilitati di default in php 5, ma puoi abilitarli nel file di configurazione php.ini usando il parametro register_long_arrays. In php 6, questi nomi lunghi non saranno disponibili.

3) Prima di elaborare le variabili da $ _POST, ti consiglio di verificare la presenza delle variabili, proprio come si faceva con il metodo GET.

La creazione dello standard Internet Web 2.0 ha consentito all'utente non solo di ricevere informazioni, ma anche di interagire attivamente con altri utenti e servizi Internet. Per organizzare questo feedback, sono stati introdotti tag aggiuntivi nel linguaggio HTML per inviare le informazioni richieste al server. Ad esempio, può trattarsi di un modulo di registrazione o di un modulo per l'aggiunta di un commento o per la creazione di un account personale (pagina di social network), ecc. In questo capitolo considereremo un insieme di tag che consentono di organizzare l'interazione dell'utente con il sito.

6.1. GET e POST richieste

Per organizzare l'interazione dell'utente con Internet, lo sviluppatore del sito deve prevedere il trasferimento delle richieste dall'utente del sito al server in cui si trova questo sito. Esistono due tipi di richieste: richieste GET e POST.

OTTENERE-richieste

Agli albori di Internet, c'erano solo richieste GET. Rappresentano il trasferimento dei dati direttamente nella barra degli indirizzi del browser, con la seguente sintassi:

http: // dominio / pagina? [parametro1 = valore1] [& parametro2 = valore2] ...

Qui, l'insieme di dati trasferiti al server inizia con il carattere "?" ed è separato dal carattere "&". I dati stessi sono coppie

parametro = valore

Ad esempio, se è necessario passare il nome e il cognome dell'utente nella pagina di registrazione (ad esempio, register.php) del sito mysite.com, sarà simile a questo:

http://mysite.com/register.php?fname=Ivan&lname=Ivanov

Va notato che i browser di versioni obsolete potrebbero percepire l'alfabeto cirillico in modo errato e il trasferimento di lettere russe verrà eseguito in modo errato. È meglio trasferire solo le informazioni di servizio sotto forma di numeri e parole in latino nelle richieste GET.

Lo svantaggio delle richieste GET è la quantità limitata di dati trasferiti. Sul lato server, la stringa di query è limitata a un valore massimo. Ad esempio, se la dimensione massima della richiesta può essere di 1024 caratteri, tutto ciò che supera questo valore verrà eliminato e quindi alcune delle informazioni trasmesse non verranno elaborate dalla pagina del sito specificata. La seconda limitazione significativa è la capacità di trasmettere set di caratteri rigorosamente definiti. Ad esempio, i personaggi? e & sono già riservati e non possono essere passati come valori di parametro. Tuttavia, questa regola può essere aggirata passando nella stringa di query non il carattere stesso, ma il suo valore di codice. Per fare ciò, usa il carattere '%' seguito dal codice del carattere, in questo modo:

http://mysite.com/register.php?fname=%CC%DF%AD%1F%DS&lname=%DD

Qui, i valori del codice sono specificati in esadecimale per salvare la lunghezza della query.

Nonostante queste carenze, sarebbe estremamente difficile creare siti senza richieste GET. Ad esempio, sono indispensabili nei casi di inizializzazione iniziale di una pagina del sito per un utente specifico, quando la richiesta indica non solo il sito e la pagina corrente, ma anche il suo id, come avviene sul social network Vkontakte:

http://vk.com/profile.php?id=12345678

Inoltre, le richieste GET vengono spesso utilizzate per verificare la correttezza dell'indirizzo email durante la registrazione di un utente. In questo caso, l'utente riceve un'e-mail con un collegamento di attivazione all'indirizzo e-mail specificato e questo collegamento è una richiesta GET.

INVIARE-richieste

Per risolvere gli inconvenienti indicati delle richieste GET, sono state aggiunte le richieste POST, che consentono il trasferimento di grandi quantità di dati in forma binaria, ovvero senza distorsioni e variazioni dei dati trasmessi. Tali richieste sono utili per caricare file e immagini sul server. Ad esempio, quando un utente carica un'immagine sul suo profilo di social network, le richieste POST vengono utilizzate per questo. Maggiori dettagli sull'organizzazione delle richieste POST saranno discussi di seguito.

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 ($ _ GET ["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 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 "&" ( 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:

Il tuo genere:
m
F

Da che paese vieni



Colore/i preferito/i:

Nero:
Rosso:
Bianco:
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 [""]. Tra parentesi quadre, devi scrivere l'identificatore, come nel caso della variabile globale get. 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 nel post dell'array globale. 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, motivo per cui in questo esempio abbiamo bisogno dell'attributo name 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 il corretto funzionamento, ad esempio, dei moduli di contatto, è necessario tenere traccia non della pressione di un pulsante, ma della correttezza delle informazioni inserite 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!

PS: vuoi che i giochi per computer diventino ancora più realistici? Directx 11 per Windows 7 può essere scaricato gratuitamente su Windows in! Goditi una grafica fantastica!

Questo post è una risposta a una domanda posta in un commento su uno dei miei articoli.

In questo articolo voglio raccontarvi quali sono i metodi HTTP GET/POST/PUT/DELETE e altri, per cosa sono stati inventati e come utilizzarli in accordo con REST.

HTTP

Quindi qual è esattamente uno dei principali protocolli di Internet? Manderò i pedanti a RFC2616 e dirò il resto come un umano :)

Questo protocollo descrive la comunicazione tra due computer (client e server), basata su messaggi chiamati Request e Response. Ogni messaggio è composto da tre parti: una riga di inizio, intestazioni e un corpo. In questo caso è necessaria solo la linea di partenza.

Le righe di partenza per la richiesta e la risposta hanno un formato diverso - siamo interessati solo alla riga di partenza della richiesta, che assomiglia a questa:

METODO URI HTTP/ VERSIONE ,

Dove METHOD è solo il metodo di richiesta HTTP, URI è l'identificatore della risorsa, VERSION è la versione del protocollo (attualmente è rilevante la versione 1.1).

Le intestazioni sono una raccolta di coppie nome-valore, separate da due punti. Nelle intestazioni vengono trasmesse diverse informazioni di servizio: codifica del messaggio, nome e versione del browser, indirizzo da cui proviene il client (Referrer) e così via.

Il corpo del messaggio è, infatti, i dati trasmessi. Nella risposta, il dato trasmesso, di regola, è la pagina html richiesta dal browser, e nella richiesta, ad esempio, nel corpo del messaggio, viene trasmesso il contenuto dei file caricati sul server. Ma di norma, il corpo del messaggio non è affatto incluso nella richiesta.

Esempio di comunicazione HTTP

Diamo un'occhiata a un esempio.

Inchiesta:
GET /index.php HTTP / 1.1 Host: example.com User-Agent: Mozilla / 5.0 (X11; U; Linux i686; ru; rv: 1.9b5) Gecko / 2008050509 Firefox / 3.0b5 Accetta: text / html Connessione: chiudi
La prima riga è la riga di richiesta, il resto sono intestazioni; il corpo del messaggio è mancante

Risposta:
HTTP / 1.0 200 OK Server: nginx / 0.6.31 Content-Language: ru Content-Type: text / html; charset = utf-8 Content-Length: 1234 Connessione: chiudi ... LA PAGINA HTML STESSA ...

Risorse e metodi

Torniamo alla stringa di query iniziale e ricordiamo che contiene un parametro come URI. Questo sta per Uniform Resource Identifier - un identificatore di risorsa uniforme. Una risorsa è, di regola, un file sul server (un esempio URI in questo caso è "/styles.css"), ma in generale una risorsa può essere un oggetto astratto ("/blogs/webdev/" - indica il blocco "Sviluppo Web ", e non per un file specifico).

Il tipo di richiesta HTTP (chiamato anche metodo HTTP) dice al server quale azione vogliamo intraprendere con la risorsa. Inizialmente (nei primi anni '90) si presumeva che il cliente potesse desiderare solo una cosa dalla risorsa: ottenerla, ma ora, utilizzando il protocollo HTTP, è possibile creare post, modificare il profilo, eliminare i messaggi e molto altro. E queste azioni sono difficili da combinare con il termine "ricezione".

Per differenziare le azioni con risorse a livello di metodi HTTP, sono state inventate le seguenti opzioni:

  • GET - ottenere una risorsa
  • POST - creazione di una risorsa
  • PUT - aggiornamento delle risorse
  • DELETE - eliminazione di una risorsa
Fai attenzione al fatto che la specifica HTTP non obbliga il server a comprendere tutti i metodi (che in realtà sono molto più di 4) - è richiesto solo GET, e inoltre non dice al server cosa dovrebbe fare quando riceve una richiesta con un metodo particolare. Ciò significa che il server risponde a una richiesta DELETE /index.php HTTP / 1.1 non è obbligato a elimina la pagina index.php sul server, proprio come nella richiesta GET /index.php HTTP / 1.1 non è obbligato a restituisce la pagina index.php a te, può eliminarla come :)

REST entra in gioco

REST (REpresentational State Transfer) - questo termine è stato coniato nel 2000 da Roy Fielding - uno degli sviluppatori del protocollo HTTP - come nome per un gruppo di principi per la creazione di applicazioni web. In generale, REST copre un'area più ampia di HTTP: può essere utilizzato su altre reti con altri protocolli. REST descrive i principi dell'interazione client-server, basati sui concetti di "risorsa" e "verbo" (puoi capirli come soggetto e predicato). Nel caso di HTTP, la risorsa è definita dal suo URI e il verbo è il metodo HTTP.

REST propone di abbandonare l'uso dello stesso URI per risorse diverse (ovvero, gli indirizzi di due articoli diversi come /index.php?article_id=10 e /index.php?article_id=20 non sono un modo REST) ​​e utilizzare diversi metodi HTTP per diverse azioni. Cioè, un'applicazione web scritta utilizzando l'approccio REST eliminerà una risorsa quando vi si accede con il metodo HTTP DELETE (ovviamente, questo non significa che dovresti essere in grado di eliminare tutto e tutto, ma qualunque la richiesta di cancellazione dell'applicazione deve utilizzare il metodo HTTP DELETE).

REST offre ai programmatori la possibilità di scrivere applicazioni web standardizzate e leggermente più belle che mai. Usando REST, l'URI per aggiungere un nuovo utente non sarà /user.php?action=create (metodo GET/POST), ma semplicemente /user.php (metodo rigorosamente POST).

Di conseguenza, combinando la specifica HTTP esistente e l'approccio REST, i vari metodi HTTP hanno finalmente senso. GET - restituisce una risorsa, POST - ne crea una nuova, PUT - ne aggiorna una esistente, DELETE - ne elimina.

I problemi?

Sì, c'è un piccolo problema con l'applicazione pratica di REST. Questo problema si chiama HTML.

Le richieste PUT / DELETE possono essere inviate tramite XMLHttpRequest, contattando il server "manualmente" (ad esempio, tramite curl o anche tramite telnet), ma non è possibile creare un modulo HTML inviando una richiesta PUT / DELETE completa.

Il punto è che la specifica HTML non ti consente di creare moduli che inviano dati se non tramite GET o POST. Pertanto, per il normale funzionamento con altri metodi, devi imitarli artificialmente. Ad esempio, in Rack (il meccanismo con cui Ruby interagisce con il server web; Rails, Merb e altri framework Ruby sono realizzati usando Rack), puoi aggiungere un campo nascosto chiamato "_method" a un modulo e specificare il nome del metodo come valore (ad esempio, "PUT") - in questo caso, verrà inviata una richiesta POST, ma Rack sarà in grado di fingere di aver ricevuto un PUT, non un POST.

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 nella barra degli indirizzi del 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 è un parametro 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 al server i dati che abbiamo compilato nel modulo di feedback.

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.
  • ELIMINARE
    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. Ad 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. Ad 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 di intestazione consentono al client di passare 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 questa query viene eseguita, i dati entrano nella cosiddetta variabile d'ambiente QUERY_STRING, dalla quale 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.

Principali articoli correlati