Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • știri
  • Solicitări HTTP GET, POST și PUT. Învățați să lucrați cu solicitări GET și POST

Solicitări HTTP GET, POST și PUT. Învățați să lucrați cu solicitări GET și POST

Utilizarea metodelor GET și POST în PHP poate fi cu greu supraestimată, deoarece aceste metode se găsesc pe aproape fiecare site. Înainte de a studia materialul descris mai jos, vă sfătuiesc să vă familiarizați cu eticheta html

. Să ne uităm la fiecare dintre aceste metode în detaliu.

metoda GET

Metoda GET folosește un șir URL pentru a trimite date. Este posibil să fi observat adrese URL lungi și obscure. De exemplu: function.php?login=Alex&email=dezyakin. În acest caz, datele sunt procesate în function.php. După semnul întrebării „?” există o enumerare a parametrilor transferați (parametrii sunt separați prin „&”) cu valorile: parametrul de autentificare este setat la Alex, iar variabila email este setată la dezyakin. Datele vor fi stocate în matricea superglobală $_GET. Un exemplu de utilizare a metodei GET este prezentat mai jos:

Autentificare : E-mail : Folosind tabloul superglobal $_GET, afișăm valorile primite:*/echo "
login = ". $_GET["login"] ; echo "
email = ". $_GET["e-mail"] ; ?>

Observați cum citim valorile din superglobalul $_GET: $_GET[„nume_variabilă”]. În exemplul nostru, numele variabilelor au fost declarate sub forma (nume=login și nume=email).

Sfat:
Înainte de a procesa valorile primite, vă sfătuiesc să verificați existența acestora prin intermediul funcțiilor isset(nume_variabilă) sau gol (nume_variabilă)- aceste funcții au fost tratate în lecția anterioară 2: Variabile în PHP. De exemplu:

verificați existența cu isset: if isset ($_GET["login"] ) ( declarații de procesare de conectare ... } //sau verificați existența cu empty: dacă este gol ($_GET["email"] ) ( operatori pentru procesarea e-mailului ... } ?>

În formular, puteți specifica numele fișierului care va procesa valorile transmise. Acest lucru se face folosind atributul de formular de acțiune, căruia i se poate atribui adresa acestui fișier. În mod implicit, acest fișier este alocat fișierului curent (adică este procesat în fișierul în care se află formularul). Iată un exemplu în care datele din formular sunt transferate în fișierul srcipt.php pentru procesare:

Autentificare : E-mail :

Fișierul script.php trebuie să conțină un fel de handler de informații, altfel informațiile vor fi trecute în gol.

Metoda GET are multe dezavantaje:

  • Utilizatorul vede valorile parametrilor trecuți;
  • Utilizatorul poate falsifica cu ușurință parametrii trecuți;
  • Transfer incomod de informații binare (trebuie să codificați în format text);
  • Cantitatea de date transmise este limitată - 8 KB;

Datorită dezavantajelor de mai sus, metoda GET este utilizată numai în cazurile în care trebuie transferată o cantitate mică de date, iar aceste date nu sunt clasificate în niciun fel.

Metoda POST

Metoda POST diferă de metoda GET prin faptul că datele sunt transmise într-o formă privată. Există o matrice superglobală $_POST , din care puteți citi date astfel: $_POST[„nume_variabilă”]. De exemplu:

Autentificare : "> E-mail: ">
Folosind matricea superglobală $_POST, afișăm valorile acceptate:*/echo "
login = ". $_POST["login"] ; echo "
email = ". $_POST["e-mail"] ; ?>

Rezultatul executării codului de mai sus este prezentat în figura de mai jos:

După cum puteți vedea, adresa URL nu are niciun atașament, dar cu toate acestea datele au fost primite și afișate.

Notă:
1) Cantitatea de valori transferate prin metoda POST este limitată implicit și este egală cu 8 MB. Pentru a crește această valoare, trebuie să modificați directiva post_max_size din php.ini.

2) În versiunile timpurii ale PHP, în loc de numele scurte ale superglobalelor $_GET și $_POST , au fost folosite nume mai lungi: $HTTP_GET_VARS și $HTTP_POST_VARS . Sunt dezactivate implicit în php 5, dar le puteți activa în fișierul de configurare php.ini cu parametrul register_long_arrays. În versiunea php 6 aceste nume lungi nu vor fi disponibile.

3) Înainte de a procesa variabilele din $_POST , vă sfătuiesc să verificați prezența variabilelor, așa cum s-a făcut cu metoda GET.

Crearea standardului de Internet Web 2.0 a permis utilizatorului nu numai să primească informații, ci și să interacționeze activ cu alți utilizatori și cu serviciile de Internet. Pentru a organiza un astfel de feedback, în limbajul HTML au fost introduse etichete suplimentare, permițându-vă să trimiteți informațiile solicitate către server. De exemplu, poate fi un formular de înregistrare, sau un formular pentru adăugarea unui comentariu, sau configurarea unui cont personal (pagina de rețea socială), etc. În acest capitol, vom lua în considerare un set de etichete care vă permit să organizați interacțiunea utilizatorului cu site-ul.

6.1. Solicitări GET și POST

Pentru a organiza interacțiunea utilizatorului cu Internetul, dezvoltatorul site-ului trebuie să prevadă transferul solicitărilor de la utilizatorul site-ului către serverul pe care se află acest site. Există două tipuri de solicitări: solicitări GET și POST.

OBȚINE-cereri

În primele zile ale internetului, existau doar solicitări GET. Acestea reprezintă transferul de date direct în bara de adrese a browserului, având următoarea sintaxă:

http://domain/page?[option1=value1][&option2=value2]...

Aici, setul de date transmis către server începe cu caracterul „?” și este separat de caracterul „&”. Datele în sine sunt o pereche

parametru=valoare

De exemplu, dacă doriți să treceți numele și prenumele utilizatorului pe pagina de înregistrare (de exemplu, register.php) a site-ului mysite.com, atunci acesta ar arăta astfel:

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

Trebuie remarcat faptul că browserele versiunilor învechite pot percepe incorect alfabetul chirilic și transferul literelor rusești va fi efectuat incorect. Este mai bine să transmiteți numai informații de serviciu în cererile GET sub formă de numere și cuvinte în latină.

Dezavantajul solicitărilor GET este numărul limitat de date transferate. Pe partea de server, șirul de interogare este limitat la o valoare maximă. De exemplu, dacă dimensiunea maximă a cererii poate fi de 1024 de caractere, atunci tot ceea ce depășește această valoare va fi șters și apoi o parte din informațiile transmise nu vor fi procesate de pagina specificată a site-ului. A doua limitare semnificativă este capacitatea de a transmite seturi de caractere strict definite. Ca simbolurile? și & sunt deja rezervate și nu pot fi transmise ca valori ale parametrilor. Cu toate acestea, această regulă poate fi ocolită dacă nu caracterul în sine este trecut în șirul de interogare, ci valoarea codului său. Pentru a face acest lucru, utilizați caracterul „%” urmat de codul caracterului, de exemplu, astfel:

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

Aici, valorile codului sunt specificate în formă hexazecimală pentru a salva lungimea cererii.

În ciuda acestor neajunsuri, crearea de site-uri fără solicitări GET ar fi extrem de dificilă. De exemplu, acestea sunt indispensabile în cazurile de inițializare inițială a unei pagini de site pentru un anumit utilizator, atunci când cererea specifică nu numai site-ul și pagina curentă, ci și id-ul acesteia, așa cum se face în rețeaua socială Vkontakte:

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

De asemenea, solicitările GET sunt adesea folosite pentru a verifica corectitudinea adresei de e-mail la înregistrarea unui utilizator. În acest caz, utilizatorul primește un e-mail cu un link de activare către e-mailul specificat, iar acest link este o solicitare GET.

POST-cereri

Pentru a rezolva aceste neajunsuri ale solicitărilor GET, au fost adăugate solicitări POST, permițându-vă să transferați cantități mari de date în formă binară, de exemplu. fără distorsiuni și modificări ale datelor transmise. Astfel de solicitări sunt potrivite pentru încărcarea fișierelor și imaginilor pe server. De exemplu, atunci când un utilizator încarcă o imagine în profilul său de rețea socială, solicitările POST sunt folosite pentru aceasta. Mai multe detalii despre organizarea cererilor POST vor fi discutate mai jos.

Poate ați observat că pe majoritatea site-urilor puteți vedea următoarele adrese:

http://website/index.php?blog=2

Aici, chiar și fără să cunoașteți php, puteți ghici că accesăm fișierul index.php Dar ce urmează după semnul întrebării, puțini oameni știu. Totul este destul de simplu: ?blog=2 aceasta este declarația variabilei globale "$_GET["blog"]" cu valoarea "2". Astfel, trec scriptului o variabilă care este responsabilă de afișarea informațiilor din baza de date. Să scriem un mic script în care vei vedea clar totul:

if(isset($_GET["blog"])) (
echo $_GET[„blog”];
}
?>

Folosim operatorul de condiție if() ca condiție, există această linie:

Isset($_GET["blog"])

isset() vă permite să aflați dacă există o variabilă care este indicată între paranteze, adică condiția pe care am descris-o în cod sună astfel: Dacă există o variabilă $_GET["blog"], atunci afișați conținutul acestei variabile pe ecran. Iată ce sa întâmplat:

Cred că este clar O variabilă globală este creată $_GET cu identificatorul pe care l-am declarat în bara de adrese ( în acest caz cu id-ul „blog”)

Acum vreau să clarific un punct. Să presupunem că trebuie să declarăm două variabile, cum se face? Prima variabilă este declarată după semnul întrebării "?" A doua variabilă este declarată după un astfel de semn „&” ( Sincer să fiu, nu știu care este acel semn.), iată un exemplu de declarare a trei variabile:

http://website/index.php?a=1&b=2&c=3

Iată codul de ieșire:

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

Condiția sună așa:

Dacă există o variabilă globală $_GET["a"] și o variabilă globală $_GET["b"] și o variabilă globală $_GET["c"] atunci afișați-le pe ecran, iată rezultatul:

Forme

Înainte să trecem la postîntrebări, trebuie să înțelegeți ce sunt formele? De ce este necesar? Deoarece variabila globală $_POST[""] este creată prin formulare. Ce este un formular? Acestea sunt câmpuri pentru introducerea unui fir de informații de către utilizator. Câmpurile sunt pe o singură linie, câmpuri mari, există și butoane radio, casete de validare. Să luăm totul în ordine...

Formularul este o etichetă:


elemente de formă

Formularul are atribute, le voi enumera pe cele mai comune:

Să creăm un formular:


elemente de formă

Ca fișier handler, am pus fișierul test.php pentru că în ea scriu exemple pentru tine. Am setat metoda de trimitere să posteze deoarece aceste metode sunt folosite în 99,9% din cazuri. Am dat și formei noastre un nume - formă

Acum să ne aruncăm în lumea elementelor de formă. Primul lucru pe care trebuie să-l înțelegeți este că aproape toate elementele sunt etichete. diferența este doar în atribut tip aceste etichete. Permiteți-mi să enumerez elementele de formular utilizate:

Sunt sigur că ați întâlnit astfel de domenii de mai multe ori, așa că aici, cum se spune: „fără comentarii”

Acum să facem un mic chestionar de instruire, cu care vom lucra în continuare. Sarcina noastră este să alcătuim un mic chestionar care să ne spună numele persoanei care l-a completat, sexul, din ce țară este, culoarea preferată și un câmp de text în care utilizatorul poate adăuga ceva despre el însuși. asta am facut:

Numele dvs. de familie Nume Patronimic:

Genul tau:
M
F

Din ce tara esti



Culori preferate:

Negru:
Roșu:
Alb:
Un alt:

Despre mine:




Rețineți că aproape fiecare etichetă are un atribut valoare pentru ce este? Conține datele pe care urmează să le transferați pe o altă pagină. Sper sa fie clar

Acum, dacă rulăm acest cod într-un browser, vom vedea următoarele:

Am folosit atributul de pe formular acțiune cu sens test.php asta înseamnă, după cum am spus, că datele din formular vor fi transferate în fișierul test.php.

Solicitare POST

Acum să scriem un cod php care ne va permite să vedem informațiile pe care le-am introdus. Unde sunt stocate datele? În cazul unei solicitări de obținere, datele noastre se aflau în variabila globală $_GET[""]. Cu o solicitare post, datele vor fi stocate în variabila globală $_POST[""]. Între paranteze pătrate, trebuie să scrieți, ca și în cazul variabilei globale get, un identificator. Întrebarea este, de unde pot obține acest identificator? De aceea avem nevoie de atributul nume pe elementele formularului! Aceste nume sunt cele care servesc drept cheie în tabloul post global. Ei bine, să începem să descriem scriptul:

if(isset($_POST["trimite"])) (
echo "Nume: ".$_POST["fio"]."
";
echo „Sex: „.$_POST[„sex”]”.
";
echo "Țara de reședință: ".$_POST["oraș"]."
";

Echo „Culoare preferată(i):
";
echo $_POST["culoarea_1"]."
";
echo $_POST["culoarea_2"]."
";
echo $_POST["culoarea_3"]."
";
echo $_POST["culoarea_4"]."
";
echo "Despre mine: ".$_POST["despre"]."


";
}
?>

Condiția if pe care am scris-o spune: Dacă variabila globală $_POST["submit"] există, atunci afișăm datele pe ecran. Această variabilă globală este creată dacă am dat clic pe butonul de trimitere, motiv pentru care în acest exemplu avem nevoie de atributul name de pe butonul. S-ar putea să vă întrebați de ce atributul nume al butonului este opțional? Totul este destul de simplu. De obicei, programatorul nu monitorizează apăsarea butonului, ci monitorizează datele trimise. Pentru funcționarea corectă, de exemplu, un formular de contact, este necesar să urmăriți nu apăsarea unui buton, ci corectitudinea introducerii informațiilor și să aflați dacă aceste informații au fost introduse deloc. În exemplul nostru, nu am verificat datele trimise, ci pur și simplu am urmărit clicul butonului, pentru a simplifica exemplul... Iată ce am primit:

Concluzie

Ei bine, pentru astăzi am analizat două metode de transfer de date între scripturi și ne-am familiarizat și cu formularele la galop. Sper din tot sufletul să vă fie de folos această informație. Dacă aveți întrebări sau gânduri, scrieți comentarii. Succes, asta-i tot pentru azi!

P.S.: Vrei ca jocurile pe calculator să devină și mai realiste? directx 11 pentru Windows 7 pe care îl puteți descărca gratuit pe Windows în! Bucurați-vă de o grafică minunată!

Această postare este un răspuns la o întrebare pusă într-un comentariu la unul dintre articolele mele.

În acest articol, vreau să vă spun care sunt metodele GET/POST/PUT/DELETE și alte metode HTTP, pentru ce au fost inventate și cum să le folosiți în conformitate cu REST.

http

Deci, care este unul dintre principalele protocoale ale Internetului? Voi trimite pedanți la RFC2616, iar restul îi voi spune într-un mod uman :)

Acest protocol descrie interacțiunea dintre două computere (client și server), construită pe baza unor mesaje numite cerere (Solicitare) și răspuns (Răspuns). Fiecare mesaj este format din trei părți: linia de început, antete și corp. În acest caz, este necesară doar linia de pornire.

Liniile de început pentru cerere și răspuns au un format diferit - ne interesează doar linia de început a cererii, care arată astfel:

METODA URI http/ VERSIUNE ,

Acolo unde METHOD este doar metoda de solicitare HTTP, URI este identificatorul resursei, VERSION este versiunea protocolului (versiunea 1.1 este relevantă în prezent).

Anteturile sunt un set de perechi nume-valoare separate prin două puncte. În anteturi sunt transmise diverse informații de serviciu: codificarea mesajului, numele și versiunea browserului, adresa de la care a venit clientul (Referrer) și așa mai departe.

Corpul mesajului este de fapt datele transmise. În răspuns, datele transmise, de regulă, sunt pagina html solicitată de browser, iar în cerere, de exemplu, în corpul mesajului, se transmite conținutul fișierelor încărcate pe server. Dar, de regulă, nu există niciun corp de mesaj în cerere.

Exemplu de interacțiune HTTP

Luați în considerare un exemplu.

Anchetă:
GET /index.php HTTP/1.1 Gazdă: example.com Agent utilizator: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5 Accept: text/html Conexiune: închide
Prima linie este șirul de interogare, restul sunt anteturi; corpul mesajului lipsește

Răspuns:
HTTP/1.0 200 OK Server: nginx/0.6.31 Content-Language: ru Content-Type: text/html; charset=utf-8 Lungimea conținutului: 1234 Conexiune: închidere... PAGINA HTML ÎNSĂȘI...

Resurse și Metode

Să revenim la șirul de interogare de început și să ne amintim că acesta conține un astfel de parametru ca URI. Aceasta înseamnă Uniform Resource Identifier - un identificator uniform de resursă. O resursă este, de regulă, un fișier de pe server (un exemplu de URI în acest caz este „/styles.css”), dar, în general, orice obiect abstract poate fi și o resursă („/blogs/webdev/” - indică „Dezvoltarea web” și nu pe un fișier anume).

Tipul de cerere HTTP (numit și metoda HTTP) îi spune serverului ce acțiune dorim să facem asupra resursei. Inițial (la începutul anilor 90) se presupunea că clientul își putea dori doar un singur lucru de la o resursă - să o primească, dar acum poți crea postări, edita un profil, șterge mesaje și multe altele folosind protocolul HTTP. Și este dificil să combinați aceste acțiuni cu termenul de „primire”.

Pentru a diferenția acțiunile cu resurse la nivelul metodelor HTTP, au fost inventate următoarele opțiuni:

  • GET - obținerea unei resurse
  • POST - crearea de resurse
  • PUT - actualizare de resurse
  • DELETE - ștergerea unei resurse
Atenție la faptul că specificația HTTP nu obligă serverul să înțeleagă toate metodele (care sunt de fapt mult mai mult de 4) - este necesar doar GET și, de asemenea, nu indică serverului ce ar trebui să facă atunci când primește o solicitare cu o metodă sau alta. Aceasta înseamnă că serverul, ca răspuns la o solicitare DELETE /index.php HTTP/1.1 nu este obligat saștergeți pagina index.php de pe server, la fel ca și pentru o solicitare GET /index.php HTTP/1.1 nu este obligat sa iti returneaza pagina index.php, el o poate sterge, de exemplu :)

REST intră în joc

REST (REpresentational State Transfer) - acest termen a fost introdus în 2000 de Roy Fielding - unul dintre dezvoltatorii protocolului HTTP - ca denumirea unui grup de principii pentru construirea de aplicații web. În general, REST acoperă o zonă mai largă decât HTTP - poate fi folosit în alte rețele cu alte protocoale. REST descrie principiile interacțiunii dintre client și server, pe baza conceptelor de „resursă” și „verb” (le poți înțelege ca subiect și predicat). În cazul HTTP, resursa este definită de URI-ul său, iar verbul este metoda HTTP.

REST propune să nu mai folosiți același URI pentru resurse diferite (adică adresele a două articole diferite precum /index.php?article_id=10 și /index.php?article_id=20 - aceasta nu este o modalitate REST) ​​și să folosiți diferite Metode HTTP pentru diferite acțiuni. Adică, o aplicație web scrisă folosind abordarea REST va șterge o resursă atunci când este accesată cu metoda DELETE HTTP (desigur, asta nu înseamnă că este necesar să se acorde posibilitatea de a șterge totul și pe toată lumea, dar orice cererea de ștergere a aplicației trebuie să utilizeze metoda DELETE HTTP).

REST oferă programatorilor posibilitatea de a scrie aplicații web standardizate și puțin mai frumoase decât oricând. Folosind REST, URI-ul pentru adăugarea unui nou utilizator nu va fi /user.php?action=create (metoda GET/POST), ci pur și simplu /user.php (strict metoda POST).

Ca rezultat, combinând specificația HTTP existentă și abordarea REST, diferite metode HTTP au în sfârșit sens. GET - returnează o resursă, POST - creează una nouă, PUT - actualizează una existentă, DELETE - o șterge.

Probleme?

Da, există o mică problemă cu aplicarea REST în practică. Această problemă se numește HTML.

Solicitările PUT/DELETE pot fi trimise prin XMLHttpRequest, contactând manual serverul (să zicem, prin curl sau chiar prin telnet), dar nu puteți face un formular HTML care trimite o cerere PUT/DELETE cu drepturi depline.

Faptul este că specificația HTML nu vă permite să creați formulare care trimit date altfel decât prin GET sau POST. Prin urmare, pentru funcționarea normală cu alte metode, este necesar să le imitați artificial. De exemplu, în Rack (mecanismul pe baza căruia Ruby interacționează cu un server web; Rails, Merb și alte cadre Ruby sunt realizate folosind Rack), puteți adăuga un câmp ascuns numit „_method” în formular și specificați numele metodei ca valoare (de exemplu, „PUT”) - în acest caz, va fi trimisă o solicitare POST, dar Rack va putea pretinde că a primit un PUT, nu un POST.

Această postare are scopul de a explica modul în care datele sunt transmise prin Internet folosind cele două metode principale: GET și POST. L-am scris ca o completare la instructiunile pentru generatorul de lucru in ture pentru cei care nu sunt interesati de detalii ☺.

Accesați următoarea adresă (aceasta este pentru o explicație vizuală): http://calendarin.net/calendar.php?year=2016 Atenție la bara de adrese a browserului: calendarin.net/calendar.php ?an=2016 Fișierul principal este denumit, urmat de un semn de întrebare (?) și de un parametru „an” cu valoarea „2016”. Deci, tot ce urmează semnul întrebării este cererea GET. Totul este simplu. Pentru a trece mai mult de un parametru, aceștia trebuie despărțiți de un ampersand (&). Exemplu: calendarin.net/calendar.php ?year=2016&display=work-days-and-days-off

Fișierul principal este în continuare denumit, urmat de un semn de întrebare (?), apoi de un parametru „an” cu valoarea „2016”, apoi de un ampersand (&), apoi de un parametru de „afișare” cu o valoare de „work- zile şi zile libere”.

Parametrii GET pot fi modificați direct în bara de adrese a browserului. De exemplu, schimbarea valorii „2016” în „2017” și apăsarea tastei vă va duce la calendarul pentru 2017.

Acesta este un transfer de date într-un mod ascuns (adresa paginii nu se schimbă); adică poți vedea ce a fost transferat doar cu ajutorul unui program (script). De exemplu, în următorul instrument de numărare a caracterelor din text, datele inițiale sunt transmise prin metoda POST: http://usefulonlinetools.com/free/character-counter.php

Dacă aveți întrebări, comentarii și e-mailul meu vă stă la dispoziție.

Pe lângă metoda GET, despre care am discutat în nota anterioară, există o altă metodă de trimitere a unei cereri prin protocolul HTTP - metoda POST. Metoda POST este, de asemenea, foarte des folosită în practică.

Dacă, pentru a accesa serverul folosind metoda GET, a fost suficient să introducem o cerere în URL, atunci în metoda POST totul funcționează după un alt principiu.

Pentru a efectua acest tip de solicitare, trebuie să facem clic pe butonul cu atributul type="submit", care se află pe pagina web. Rețineți că acest buton se află în element , care are atributul de metodă setat la post.

Luați în considerare acest cod HTML:

Introdu text:


Dacă utilizatorul introduce ceva text în câmpul de text și face clic pe butonul „Trimite”, atunci variabila text va fi trimisă la server cu valoarea conținutului introdus de utilizator.

Cereri POST și GET în termeni simpli

Această variabilă va fi trimisă prin metoda POST.

Daca scrii in forma asa:

Datele vor fi trimise folosind metoda GET.

Dacă, în cazul unei solicitări GET, cantitatea de date pe care le-am putea transfera a fost limitată de lungimea barei de adrese a browserului, atunci în cazul unei solicitări POST, nu există o astfel de limită și putem transfera sume semnificative De informații.

O altă diferență între metoda POST și metoda GET este că metoda POST ascunde toate variabilele și valorile lor transmise în corpul său (Entity-Body). În cazul metodei GET, acestea au fost stocate în șirul de solicitare (Request-URI).

Iată un exemplu de solicitare făcută folosind metoda POST:

POST / HTTP/1.0\r\n
Gazdă: www.site.ru\r\n
Referer: http://www.site.ru/index.html\r\n
Cookie: venit=1\r\n
Tip de conținut: application/x-www-form-urlencoded\r\n
Lungimea conținutului: 35\r\n
\r\n
login=Dima&parola=12345

Astfel, atunci când transmiteți date folosind metoda POST, va fi mult mai dificil pentru un atacator să le intercepteze, deoarece sunt ascunse din vedere directă, astfel încât metoda POST de transfer de date este considerată o metodă mai sigură.

În plus, folosind metoda POST, puteți transfera nu numai text, ci și date multimedia (imagini, audio, video). Există un parametru special Content-Type care specifică tipul de informații care trebuie trimise.

Și în final, pentru a obține datele care au fost transmise prin această metodă pe server, se folosește variabila POST.

Iată un exemplu de procesare în PHP:

echo $_POST['text'];
?>

În ultima notă, am decis că browserul (clientul) trimite cereri HTTP către server, iar serverul trimite răspunsuri HTTP către client. Aceste cereri și răspunsuri sunt făcute după anumite reguli. Există ceva de genul sintaxă, cum și în ce ordine ar trebui scrisă. Trebuie să existe o structură strict definită.

Să aruncăm o privire mai atentă asupra acestei structuri, care construiește cereri și răspunsuri în protocolul HTTP.

O solicitare HTTP constă din trei părți principale, care apar în ordinea enumerată mai jos. Între anteturi și corpul mesajului există o linie goală (ca separator), aceasta reprezintă caracterul newline.

Șir gol (separator)

Postați și primiți cereri, care este diferența dintre ele și care este mai bună și în ce scopuri?

Corpul mesajului (Entity Body) – parametru opțional

Șir de interogare- Specifică metoda de transfer, URL-ul de accesat și versiunea protocolului HTTP.

Titluri– descrie corpul mesajului, transmite diferiți parametri și alte informații și informații.

Conținutul mesajului- acestea sunt datele în sine care sunt transmise în cerere. Corpul mesajului este opțional și poate fi omis.

Când primim o solicitare de răspuns de la server, corpul mesajului este cel mai adesea conținutul paginii web. Dar, atunci când facem cereri către server, poate fi uneori prezent și, de exemplu, atunci când transferăm datele pe care le-am completat în formularul de feedback către server.

Mai detaliat, fiecare element al cererii, îl vom lua în considerare în notele următoare.

Să luăm, de exemplu, o cerere reală către server. Am evidențiat fiecare parte a cererii cu o culoare diferită: șirul de interogare este verde, anteturile sunt portocalii, iar corpul mesajului este albastru.

Solicitare browser:

Gazdă: webgyry.info

Cookie: wp-settings

Conexiune: păstrați-vă în viață

În exemplul următor, corpul mesajului este deja prezent.

Răspunsul serverului:

Tip de conținut: text/html; set de caractere=UTF-8

Transfer-Codificare: fragmentat

Conexiune: păstrați-vă în viață

Păstrați în viață: timeout=5

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

Document fără titlu

Acestea sunt mesajele schimbate între client și server prin protocolul HTTP.

Apropo, doriți să știți dacă are vreun sens un element de pe site-ul dvs. folosind „obiectivele” Yandex Metrics și Google Analytics?

Eliminați ceea ce nu funcționează, adăugați ceea ce funcționează și dublați-vă veniturile.

Curs de stabilire a obiectivelor Yandex Metrics.

Curs de stabilire a obiectivelor Google Analytics.

Clientul HTTP trimite o cerere către server sub forma unui mesaj de solicitare, care are următorul format:

  • Șir de interogare (element obligatoriu)
  • Titlu (element opțional)
  • Șir gol (element obligatoriu)
  • Corpul mesajului (element opțional)

Să luăm în considerare fiecare dintre aceste elemente separat.

Șir de interogare

Șirul de solicitare începe cu un token de metodă urmat de URI-ul cererii și versiunea protocolului. Elementele sunt separate unele de altele prin spații:

Să ne uităm la acest element mai detaliat.

Metoda de solicitare

Acest element specifică metoda care trebuie invocată pe partea serverului la URI-ul specificat.

Există opt metode în HTTP:

  • CAP
    Folosit pentru a obține șirul de stare și titlul de la server prin URI. Nu modifică datele.
  • OBȚINE
    Folosit pentru a primi date de la server la URI-ul specificat. Nu modifică datele.
  • POST
    Folosit pentru a trimite date către server (cum ar fi informații despre dezvoltator etc.) folosind formulare HTML.
  • A PUNE
    Înlocuiește toate datele anterioare de pe resursă cu datele nou încărcate.
  • ȘTERGE
    Îndepărtează toate datele curente de pe resursa specificată de URI.
  • CONECTAȚI
    Stabilește o conexiune tunel la server la URI-ul specificat.
  • OPȚIUNI
    Descrie proprietățile conexiunii pentru resursa specificată.
  • URMĂ
    Furnizează un mesaj care conține o urmărire inversă a locației resursei specificate în URI.

Solicitare URI

URI (Uniform Resource Identifier) ​​este identificatorul resursei către care este trimisă cererea. Următorul este cel mai comun format URI:

‘*’ utilizat atunci când cererea HTTP nu este pentru o anumită resursă, ci pentru un server. Folosit numai atunci când metoda nu trebuie aplicată la resursă. De exemplu,

absoluteURI utilizat atunci când se face o solicitare HTTP către un proxy. Proxy-ului i se cere să transmită cererea din memoria cache disponibilă și returnează un răspuns. De exemplu:

cale_absolută | o sursă folosit cel mai frecvent.

Învățați să lucrați cu solicitări GET și POST

Este solicitată o resursă specifică a unui anumit server. De exemplu, un client dorește să obțină o resursă de la un server de pe portul 80. Adresa resursei este „www.proselyte.net” și trimite următoarea solicitare:

Câmpuri de antet de solicitare

Câmpurile de antet permit clientului să transmită serverului informații suplimentare despre cerere și despre sine. Aceste câmpuri acționează ca modificatori de interogare.

Mai jos este o listă cu cele mai importante câmpuri de antet care pot fi utilizate:

  • Acceptați setul de caractere
  • Acceptați codificarea
  • Accept-Limba
  • Autorizare
  • Aştepta
  • Dacă Match
  • Dacă-Modificat-De vreme ce
  • Dacă-Niciunul-Se potrivește
  • Dacă Range
  • Dacă-Nemodificat-De vreme ce
  • Gamă
  • Referitor
  • Agent utilizator

Dacă dorim să implementăm propriul nostru client și propriul nostru server web, atunci ne putem crea propriile câmpuri de antet.

Exemplu de solicitare HTTP

Aceasta încheie studiul nostru despre solicitările HTTP.
În articolul următor, ne vom uita la răspunsurile HTTP.

O modalitate de a trimite o cerere HTTP către un server este utilizarea metodei GET. Această metodă este cea mai comună și solicitările către server apar cel mai adesea folosind ea.

Cel mai simplu mod de a crea o solicitare GET este să tastați adresa URL în bara de adrese a browserului.

Browserul va trimite următoarele informații către server:

GET/HTTP/1.1
Gazdă: webgyry.info
Agent utilizator: Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Limba de acceptare: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Acceptare-Codificare: gzip, deflate
Cookie: wp-settings
Conexiune: păstrați-vă în viață

Cererea are două părți:

1. Linie de solicitare

2. Anteturi (anteturi de mesaje)

Rețineți că o solicitare GET nu are un corp de mesaj. Dar, asta nu înseamnă că cu ajutorul lui nu putem transfera nicio informație pe server.

Diferența dintre metodele GET și POST

Acest lucru se poate face folosind parametri speciali GET.

Pentru a adăuga parametri GET la o solicitare, trebuie să puneți un „?” la sfârșitul adresei URL. și după aceasta începeți să le întrebați după următoarea regulă:

parameter_name1=parameter_value1& parameter_name2=parameter_value2&...

Separatorul dintre parametri este semnul „&”.

De exemplu, dacă dorim să trimitem două valori către server, numele de utilizator și vârsta, atunci acest lucru se poate face cu următoarea linie:

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

Când această interogare este executată, datele intră în așa-numita variabilă de mediu QUERY_STRING, de la care pot fi obținute pe server folosind un limbaj de programare web pe partea de server.

Iată un exemplu despre cum se poate face acest lucru în PHP.

echo „Numele tău: ” . $_GET[„nume”] . "
»;
echo "Vârsta ta este: " . $_GET[„varsta”] . "
»;
?>

Construcția $_GET["nume_parametru"] vă permite să afișați valoarea parametrului transmis.

Ca urmare a executării acestui cod în browser, veți vedea:

Numele tău: dima
Varsta ta: 27

de asemenea, facem o cerere către server folosind metoda GET.

Top articole similare