Hüperteksti edastusprotokoll

Hüperteksti edastusprotokoll (inglise keeles Hypertext Transfer Protocol ehk HTTP) on protokoll teabe edastamiseks arvutivõrkudes. HTTP on andmete edastamise aluseks veebis.
Hüpertekst on struktureeritud tekst, mis kasutab teistele ressurssidele viitamiseks hüperlinke. HTTP on hüperteksti edastamiseks loodud protokoll.
HTTP arenduse algatas Tim Berners-Lee CERNis 1989. aastal. HTTP standardite väljatöötamist koordineerisid Internet Engineering Task Force (IETF) ja World Wide Web Consortium (W3C) ning see kulmineerus mitmete kommentaarinõuete (RFC-de) avaldamisega. Kõige kasutatum HTTP versioon HTTP/1.1 defineeriti esmakordselt aastal 1997 RFC 2068-s, kuid 1999. aastal asendati see RFC 2616-ga ja 2014. aastal omakorda RFC 7230 sarjaga.

Tehniline ülevaade

HTTP kasutab klient-server-mudelit ja päring-vastus-protokolli. Näiteks võib kliendi rollis olla veebibrauser ning serveri rollis veebisaiti majutav arvuti. Klient esitab serverile HTTP-päringu. Server töötleb sissetulnud päringu ja tarnib kliendile küsitud ressursi või sooritab kliendi nimel tegevusi. Server tagastab kliendile vastuse, mis sisaldab päringu töötlemise tulemusi ning võib sisaldada ka kliendi päritud ressursse.
HTTP disain võimaldab kasutada vahepealseid võrguelemente, et täiustada klientide ja serverite vahelist suhtlemist. Suure liiklusega veebilehed kasutavad sageli puhverservereid, mis pakuvad kliendile sisu ülaserverite nimel, et kiirendada kliendi juurdepääsu sisule. Veebibrauserid puhverdavad varem kasutatud ressursse ning võimalusel taaskasutavad neid võrguliikluse vähendamiseks. HTTP ressursid on tuvastatavad võrgus nende internetiaadresside kaudu URI-skeemidega http ja https.

Päringumeetodid

HTTP määratleb meetodid, mis vastavad toimingutele, mida tahetakse viidatud ressursil teostada. Ressurss võib sõltuvalt serveri implementatsioonist kujutada endast kas olemasolevaid andmeid, näiteks faile, või dünaamilisi ehk genereeritud andmeid, näiteks mõne protsessi väljundit. HTTP/1.0 spetsifikatsioon määratles meetodid GET, POST ja HEAD. HTTP/1.1 spetsifikatsioon lisas 5 uut meetodit: OPTIONS, PUT, DELETE, TRACE ja CONNECT. Kuna meetodid on spetsifikatsioonidokumentides defineeritud, on nende semantika hästi teada ja neid saab usaldada. Iga klient võib kasutada mistahes meetodit ja server võib olla seatud üles toetama mistahes meetodite komplekti. Kui kasutusel olev meetod on vahepealsele elemendile tundmatu, käsitletakse seda kui ohtlikku ja mitteidempotentset meetodit. Meetodite arv ei ole piiratud – see võimaldab tulevikus uusi meetodeid luua (lõhkumata olemasolevat taristut).

Ohutud meetodid

Mõned meetodid (näiteks HEAD, GET, OPTIONS ja TRACE) on definitsiooni järgi määratletud ohututeks, mis tähendab, et nad on ette nähtud üksnes teabe edastamiseks ja ei tohiks muuta serveri olekut. Teisisõnu ei tohiks neil olla kõrvaltoimeid peale üldiselt kahjutute tegevuste nagu logimine või puhverdamine. GET-päringute saatmine peaks olema serveri olekule ohutu, olenemata hetkeolekust, kuid seda ei saa garanteerida, sest praktikas ei ole nende käitlemine mingil moel tehniliselt piiratud.
Samas meetodid POST, PUT, DELETE ja PATCH on ette nähtud tegevusteks, mis võivad põhjustada nii muutusi serveri olekus kui ka kõrvaltoimeid , näiteks rahalisi tehinguid või e-posti edastamist.