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 formatate în conformitate cu anumite reguli. Există ceva ca o 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 prin care cererile și răspunsurile sunt construite în protocolul HTTP.
O solicitare HTTP constă din trei părți principale, care apar în ordinea de mai jos. Între anteturi și corpul mesajului există o linie goală (ca separator reprezintă un caracter de avans de linie);
1. Linie de solicitare
2. Antetele mesajelor
Șir gol (delimitator)
3. corpul mesajului (Entity Body) – parametru opțional
Șir de interogare– specifică metoda de transfer, adresa URL care trebuie accesată și versiunea protocolului HTTP.
Titluri– descrie corpul mesajelor, transmite diverș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 un parametru opțional și poate lipsi.
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.
Vom analiza fiecare element al cererii mai detaliat în notele următoare.
Să luăm, de exemplu, o cerere reală către server. Am evidențiat fiecare parte a solicitării cu o culoare diferită: linia de solicitare este verde, anteturile sunt portocalii și corpul mesajului este albastru.
Solicitare browser:
GET / HTTP/1.1
Gazdă: site web
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ță
În exemplul următor, corpul mesajului este deja prezent.
Răspunsul serverului:
HTTP/1.1 200 OK
Tip de conținut: text/html; set de caractere=UTF-8
Transfer-Codificare: fragmentat
Conexiune: păstrați-vă în viață
Keep-Alive: timeout=5
Server: Apache
X-Pingback: //site/xmlrpc.php
Acestea sunt mesajele schimbate între client și server prin HTTP.
Apropo, am configurat rapoarte, obiective și evenimente în sistemele Yandex Metrica și Google Analytics.
Vă prezentăm o descriere a principalelor aspecte ale protocolului HTTP - un protocol de rețea care, de la începutul anilor 90 până în prezent, permite browserului dvs. să încarce pagini web. Acest articol a fost scris pentru cei care abia încep să lucreze cu rețele de calculatoare și să dezvolte aplicații de rețea și care încă le este greu să citească singuri specificațiile oficiale.
HTTP- un protocol de transfer de date utilizat pe scară largă, destinat inițial transferului de documente hipertext (adică documente care pot conține link-uri care permit navigarea către alte documente).
Abrevierea HTTP reprezintă Protocolul de transfer hipertext, „protocol de transfer hipertext”. Conform specificației OSI, HTTP este un protocol de strat de aplicație (superior, al 7-lea). Versiunea actuală a protocolului, HTTP 1.1, este descrisă în specificația RFC 2616.
Protocolul HTTP implică utilizarea unei structuri de transfer de date client-server. Aplicația client generează o cerere și o trimite către server, după care software-ul server procesează cererea, generează un răspuns și îl trimite înapoi clientului. Aplicația client poate continua apoi să trimită alte solicitări, care vor fi procesate în același mod.
O sarcină care este rezolvată în mod tradițional folosind protocolul HTTP este schimbul de date între o aplicație de utilizator care accesează resurse web (de obicei un browser web) și un server web. În prezent, datorită protocolului HTTP operează World Wide Web.
HTTP este adesea folosit ca protocol de transport pentru alte protocoale de nivel de aplicație, cum ar fi SOAP, XML-RPC și WebDAV. În acest caz, se spune că protocolul HTTP este folosit ca „transport”.
API-ul multor produse software implică și utilizarea HTTP pentru transferul de date - datele în sine pot fi în orice format, de exemplu, XML sau JSON.
De obicei, transferul de date HTTP se realizează prin conexiuni TCP/IP. În acest caz, software-ul server utilizează de obicei portul TCP 80 (și, dacă portul nu este specificat explicit, atunci software-ul client utilizează de obicei portul 80 în mod implicit pentru deschiderea conexiunilor HTTP), deși poate folosi oricare altul.
Cum se trimite o solicitare HTTP?
Cel mai simplu mod de a înțelege protocolul HTTP este să încercați să accesați manual o resursă web. Imaginează-ți că ești browser și ai un utilizator care își dorește foarte mult să citească articole de Anatoly Alizar.Să presupunem că a introdus următoarele în bara de adrese:
Http://alizar.habrahabr.ru/
În consecință, tu, ca browser web, acum trebuie să te conectezi la serverul web de la alizar.habrahabr.ru.
Pentru a face acest lucru, puteți utiliza orice utilitar adecvat de linie de comandă. De exemplu, telnet:
Telnet alizar.habrahabr.ru 80
Permiteți-mi să clarific imediat că, dacă vă răzgândiți brusc, apăsați Ctrl + „]” și apoi introduceți - acest lucru vă va permite să închideți conexiunea HTTP. Pe lângă telnet, puteți încerca nc (sau ncat) - în funcție de gusturi.
După ce vă conectați la server, trebuie să trimiteți o solicitare HTTP. Acest lucru, apropo, este foarte ușor - cererile HTTP pot consta doar din două linii.
Pentru a genera o solicitare HTTP, trebuie să compuneți o linie de pornire și, de asemenea, să setați cel puțin un antet - acesta este antetul Host, care este obligatoriu și trebuie să fie prezent în fiecare solicitare. Faptul este că conversia unui nume de domeniu într-o adresă IP se realizează pe partea clientului și, în consecință, atunci când deschideți o conexiune TCP, serverul la distanță nu are nicio informație despre adresa care a fost folosită pentru conexiune: ar putea fi, de exemplu, adresa alizar.habrahabr.ru, habrahabr.ru sau m.habrahabr.ru - și în toate aceste cazuri răspunsul poate diferi. Cu toate acestea, de fapt, în toate cazurile conexiunea la rețea este deschisă cu nodul 212.24.43.44, și chiar dacă inițial la deschiderea conexiunii nu a fost specificată această adresă IP, ci un nume de domeniu, serverul nu este informat despre acest lucru în în orice fel - și de aceea această adresă este necesară trecerea în antetul Gazdă.
Linia de cerere de pornire (inițială) pentru HTTP 1.1 este compusă conform următoarei scheme:
De exemplu (o astfel de linie de început poate indica faptul că pagina principală a site-ului este solicitată):
Și, desigur, nu uitați că orice tehnologie devine mult mai simplă și mai clară atunci când începeți să o utilizați.
Mult succes si invatare fructuoasa!
Etichete: Adăugați etichete
Despre care am discutat în postarea 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 contacta serverul folosind metoda GET, trebuia doar să introducem o cerere în URL, atunci în metoda POST totul funcționează pe un alt principiu.
Pentru a executa acest tip de solicitare, trebuie să facem clic pe butonul cu atributul type="submit", care se află pe pagina web. Vă rugăm să rețineți că acest buton se află în element
Dacă utilizatorul introduce un text în câmpul de text și dă clic pe butonul „Trimite”, variabila text va fi trimisă la server cu valoarea conținutului introdus de utilizator. Această variabilă va fi trimisă folosind metoda POST.
Dacă scrieți formularul astfel: