Cookies
Cookies sunt scrise inlantuit, delimitat de punct si virgula (mai putin ultima). Implicit, comunicarea HTTP este considerata stateless. Nu se poate face corelatie intre oricare doua cereri succesive. Cookies retin bucati de informatie trimise de la server catre client, pentru a putea fi refolosite in cereri ulterioare.
Note
Cookiurile sunt artefacte care se salvează doar la Client.
Inaintea datelor (sau la finalul
cererii, daca nu exista date) se pune intotdeauna \r\n\
Data variaza in functie de tipul de data transmis. Cele mai des intalnite tipuri de date transmise sunt:
- text/html - De exemplu, pagini HTML
- application/x-www-form-urlencoded - Date de forma key1=value1&key2=value2&…&keyN=valueN. Datele sunt inlantuite prin “&”
- application/json - Date de forma JSON (Javascript Object Notation). Folosite des in interactiunea cu API-uri
- multipart/form-data - Date binare, de exemplu, fisiere
Pe baza informatiilor prezentate mai sus, o varianta simplificata a cererii catre facebook, din exemplu, ar arata asa:
GET /search/top/?q=programare%20%web%202020 HTTPS\r\n
Host: facebook.com\r\n
User-Agent: Mozilla/5.0\r\n
Connection: keep-alive\r\n
Cookie: c_user=XXXXXXXXXX; presence=XXXXXXX\r\n
\r\n
Exemplu foarte simplu de POST.
POST /test HTTP/1.1
Host: foo.example
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
field1=value1&field2=value2
Note
Este obligatoriu sa puneti \r\n la finalul fiecarui
rand din cerere, cu exceptia datelor atasate.
Un exemplu de implmentare a unei cereri HTTP de tip GET pe baza codului sursă din skeletpoate fi gasit mai jos.
message = compute_get_request(SERVERADDR, "/api/v1/dummy", NULL, NULL, 0);
send_to_server(sockfd, message);
response = receive_from_server(sockfd);
printf("%s\n", response);