| HTTP |
| --- |
| Tipas: | kliento-serverio |
| Portas: | tcp/80 |
| RFC: | 2616 |
| OSI lygis | 6-7 |


|  |  |
| --- | --- |
|    | **Šiame straipsnyje naudojami diskutuotini terminai.**Daugiau apie kompiuterinius terminus skaitykite žodynėlyje. |

**HTTP** (trumpinys nuo angl. **HyperText Transfer Protocol**) – pagrindinis metodas informacijai pasauliniame tinkle (WWW) pasiekti. Pradinė protokolo paskirtis – pateikti standartinį būdą HTML puslapiams skelbti ir skaityti.

HTTP kūrimą koordinavo *World Wide Web* konsorciumas ir *Internet Engineering Task Force* darbo grupė, vėliau pateikusi keletą RFC aprašymų, iš kurių svarbiausias yra RFC 2616, apibrėžiantis HTTP/1.1, plačiausiai naudojamą HTTP versiją.

HTTP yra užklausos - atsakymo protokolas, jungiantis klientą ir serverį. HTTP klientas, pavyzdžiui, naršyklė, inicijuoja užklausą, kai TCP/IP ryšiu jungiasi prie tam tikro nutolusio kompiuterio prievado („porto") (pagal nutylėjimą naudojamas 80). HTTP serveris klausosi šio prievado, laukdamas kliento užklausos, pavyzdžiui, „GET / HTTP/1.1" (užklausiančio pradinio serverio puslapio) ir susijusio MIME informacinio pranešimo, nusakančio užklausos prigimtį, taip pat kartais po informacinio pranešimo gali eiti ir papildoma informacija. Gavęs užklausą, serveris atgal siunčia atsakymo eilutę („200 OK" sėkmės atveju) ir susijusį pranešimą, kuris dažniausiai yra HTML puslapis.

HTTP užklausos
--------------

* **GET** – dažniausia užklausa, reikalaujanti tam tikro resurso iš URL adreso.
* **POST** – panašu į *GET*, tačiau siunčiami duomenys serveryje panaudojami kaip parametrai naujam(-iems) resursams kurti (pvz.: naujo naudotojo registracijos formos duomenys).
* **PUT** – panašu į *POST*, tačiau užklausa skirta resurso perrašymui. Senas resursas ištrinamas ir vietoj jo įrašomas naujas resursas, sukurtas pagal pateiktus duomenis (pvz.: senos profilio nuotraukos pakeitimas nauja).
* **PATCH** – panašu į *PUT*, tačiau užklausa yra skirta resurso duomenų atnaujinimui, o ne pilnam perrašymui (pvz.: naudotojo vardo atnaujinimas)
* **DELETE** – naudojama resurso ištrynimui iš serverio (pvz.: profilio nuotraukos ištrynimas).
* **HEAD** – panaši į *GET*, tačiau reikalaujama tik atsakymo antraštė, o paties atsakymo dokumentas nelaukiama.
* **TRACE** – grąžina gautą užklausą, gali būti naudojama patikrai, kokių papildomų metaduomenų prideda tarpiniai serveriai.
* **CONNECT** – retai palaikoma.

HTTPS yra saugi HTTP versija, naudojanti SSL/TLS duomenis. Šis protokolas paprastai naudoja 443 TCP prievadą.

Pavyzdys
--------

Žemiau pateiktas paprastas kliento ir serverio bendravimo pavyzdys.

**Kliento užklausa**:

```
GET / HTTP/1.1
Host: www.google.com

```

(gale būtinas naujos eilutės simbolis – *carriage return* ir *line feed*)

**Serverio atsakymas**:

```
HTTP/1.1 200 OK
Content-Length: 3059
Server: GWS/2.0
Date: Sat, 11 Jan 2003 02:44:04 GMT
Content-Type: text/html
Cache-control: private
Set-Cookie: PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqy
X9j; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com
Connection: keep-alive

```

(Gale yra papildoma tuščia eilutė ir po jos eina HTML tekstas iš Google pradinio puslapio.)