HTTP este un protocol utilizat pentru transferul de date printr-o retea. Este fundamentul oricarui schimb de date de pe web si este un protocol client-server, ceea ce inseamna ca solicitarile sunt initiate de destinatar, de obicei browserul web. Exista doua tipuri principale de mesaje HTTP: solicitari si raspunsuri.

Clientii si serverele comunica prin schimbul de mesaje individuale (spre deosebire de un flux de date). Mesajele trimise de client, de obicei un browser Web, se numesc solicitari (requests) si mesajele trimise de server ca raspuns se numesc raspunsuri (responses).

Proiectat la inceputul anilor 1990, HTTP este un protocol extensibil care a evoluat in timp. Este un protocol de tip application layer care este trimis prin TCP sau printr-o conexiune TCP criptata TLS, desi teoretic ar putea fi utilizat orice protocol de transport fiabil.

Datorita extensibilitatii sale, este folosit nu numai pentru a prelua documente hypertext, ci si pentru imagini si videoclipuri sau pentru a posta continut pe servere, precum rezultatele unui formular HTML. HTTP poate fi, de asemenea, utilizat pentru a prelua parti din documente pentru actualizarea paginilor web la cerere.

Ce este un request HTTP?

Un request HTTP (sau o solicitare) este modul in care platformele de comunicatii pe Internet, cum ar fi browserele web, solicita informatiile de care au nevoie pentru a incarca un site web.

Fiecare request HTTP efectuat pe Internet poarta cu sine o serie de date codificate care transporta diferite tipuri de informatii. O interogare HTTP tipica contine:

  • Tipul versiunii HTTP
  • O adresa URL
  • O metoda HTTP
  • Anteturi de solicitare HTTP (request headers)
  • Body HTTP optional
Cum arata o solicitare (request) tipica?

Un request HTTP este o serie de linii de text care urmeaza protocolul HTTP. O solicitare GET ar putea arata astfel:

GET /hello.txt HTTP/1.1
User-Agent: curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11
Host: www.exemplu.ro
Accept-Language: ro

Aceasta secțiune de text, generata de browserul utilizatorului, este trimisa pe Internet. Problema este ca, fiind trimisa in plaintext, oricine monitorizeaza conexiunea poate citi mesajul. Aceasta este o problema in special atunci cand utilizatorii trimit date sensibile prin intermediul unui site web sau al unei aplicații web.

Cum arata un raspuns (response) tipic?

Cand un server de origine primește o solicitare HTTP, acesta trimite un raspuns HTTP, care este similar:

HTTP/1.1 200 OK
Date: Wed, 28 Jan 2019 11:13:39 GMT
Server: Apache
Last-Modified: Mon, 4 Jan 2019 10:15:01 GMT
Accept-Ranges: bytes
Content-Length: 12
Vary: Accept-Encoding
Content-Type: text/plain

Hello World!

Ce este un antet de solicitare HTTP?

Anteturile HTTP contin informatii text stocate in perechi de tip cheie-valoare si sunt incluse in fiecare request HTTP (si response). Aceste anteturi comunica informatii de baza, cum ar fi ce browser utilizeaza clientul, ce date sunt solicitate.

Ce contine HTTP request body?

Request body este partea care contine „corpul” informatiilor pe care solicitarea le transfera. Corpul unui request HTTP contine orice informatii trimise catre serverul web, cum ar fi un nume de utilizator si o parola, sau orice alte date introduse intr-un formular.

 

Aspecte de baza ale HTTP

  • HTTP este simplu – mesajele HTTP pot fi citite si intelese de oameni
  • HTTP este extensibil – protocolul este usor de extins cu noi functionalitati
  • HTTP este statelss dar nu sessionless – nu exista nicio legatura intre doua cereri care sunt efectuate succesiv pe aceeasi conexiune. Dar, desi nucleul HTTP in sine este stateless, cookie-urile HTTP permit utilizarea sesiunilor stateful (prin extensibilitatea antetului)
  • HTTP si conexiuni – HTTP se bazeaza pe standardul TCP, care este bazat pe conexiune. Inainte ca un client si un server sa poata schimba o pereche de solicitare / raspuns HTTP, trebuie sa stabileasca o conexiune TCP, un proces care necesita mai multe calatorii dus-intors.

Ce poate fi controlat de HTTP?

Caracteristici comune usor de controlat cu HTTP:

  • Caching
  • Relaxing the origin constraint
  • Authentication
  • Proxy & tunneling
  • Sessions

 

Daca un site web foloseste HTTP in loc de HTTPS, toate solicitarile si raspunsurile pot fi citite de oricine monitorizeaza sesiunea. In esenta, un hacker rau intentionat poate citi textul din cerere sau raspuns si poate sti exact ce informatii cere, trimite sau primeste cineva. Iata de ce, in privinta securitatii, este mult mai indicat sa utilizati HTTPS.