HTTP

**Hypertext Transfer Protocol** (**HTTP**) er aðferð til að senda eða taka við gögnum á veraldarvefnum. Upprunalegi tilgangurinn var að birta HTML síður, þótt núna sé **HTTP** líka notað til að hlaða niður t.d. myndum, hljóði, leikjum, textaskjölum og margmiðlun af allri gerð. Venjulega eru HTTP skilaboð alltaf í pörum (en ekki reglan frá og með HTTP/2), beiðni frá biðlara og svar frá miðlara. HTTP skilaboð eru byggð upp af **HTTP** haus og síðan gögnunum sjálfum. Til að skilja á milli gagnanna og haussins eru notuð tvö auð línubil (í útgáfum af HTTP fyrir HTTP/2). **HTTP/1.1** er enn mikið notað og í nokkrum mæli næsta útgáfa HTTP, **HTTP/2**, sem stöðluð var 2015, og er studd af flestum vöfrum og t.d. netþjónum Google.

**[[:en:HTTP/3|HTTP/3]]**, arftaki HTTP/2 (og HTTP), var staðlað 2022, og er líka nú þegar í notkun á vefnum (frá því áður en staðlað) á 25% af vefsíðum og er stutt af mörgum vöfrum (75% af notendum). HTTP/3 notar QUIC (sem byggir á UDP) í stað TCP, ólíkt fyrri HTTP stöðlum, og gerir vefsíður, í raun, enn sneggri en HTTP/2 sem var líka endurbót á eldri HTTP staðli.

Allar þessar aðferðir þurfa bæði stuðning í vöfrum sem notaðir eru, en líka á miðlara ("web server"). Hvaða aðferð er í raun notuð er ekki augljóst fyrir notanda (ólíkt dulkóðuðu **HTTPS**; þó nota staðlarnir HTTP/2 og nýrri í reynd HTTPS). HTTPS þýðir aðeins að notuð sé örugg útgáfa af HTTP, t.d. HTTP/1.1 (eða nýrri); S-ið í lokin stendur fyrir secure, og ættu hið minnsta allir netbankar að nota það dulkóðaða afbrigði af HTTP.

Cloudflare tilkynnti HTTP/3 stuðning á sínum netþjónum (til nota fyrir viðskiptavini) og Google Chrome (í Canary útgáfunni) í september 2019. Stuðningur er líka kominn í Firefox.

## Bygging skilaboða
Hér er dæmi um **HTTP** 1.1 beiðni (er samsvarandi í HTTP/" en HTTP/3 sendir ekki textabeiðni):


```
GET /wiki/Notandi:SvartMan HTTP/1.1
Host: is.wikipedia.org
```


Með ímynduðu svari (HTTP/3 sendir heldur ekki texta-svar til baka):


```html
HTTP/1.1 200 OK
Date: Mon, 22 Desember 2008
20:40:00 GMT
Content-length: 85
Content-type: text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="is" lang="is" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
...
</head>
</html>
```

Athugið að línubil er notað til að skilja á milli hluta haussins, og tvö til að skilja á milli haussins og gagnanna.

## Tegundir beiðna
Algengasta tegund HTTP beiðnar er GET. Þar á eftir koma POST, CONNECT og HEAD. GET er notað til að biðja um upplýsingar, til dæmis vefsíðu. POST er notuð til að senda skipun, í mjög víðri merkingu. Þannig má nota POST til að bæta ummælum við bloggfærslu, breyta grein á Wikipediu eða framkvæma millifærslu í netbanka. HEAD er notað til að biðja um upplýsingar um skjal sem má ná í með GET. Svar við HEAD beiðni getur sagt til um hvort skjalið er til, ágiskun á stærð þess og dagsetningu seinustu breytingar.

POST og PUT beiðnirnar eru sérstakar að því leyti að þeim fylgir skjal. Til að skipa fyrir yfir HTTP er byrjað á því að ná í eyðublað með GET. Eyðublaðið sendir notandinn svo til baka útfyllt með POST beiðni. Vefþjónninn bregst þá við með því að framkvæma aðgerðina. Sending skipunar yfir net er torveld að því leyti að erfitt getur verið að fá staðfest hvort eyðublaðið hefur komist til skila eða ekki ef netsamband rofnar við lok sendingar. Þó að netsamband komist aftur á, er ekki víst að þorandi sé að endursenda eyðublaðið ef ske kynni að aðgerðin verði þá tvítekinn. Til dæmis sami reikningur tvígreiddur.

;GET: Sækja skjal.
;POST: Framkvæma aðgerð.
;CONNECT: (*tæknilegt*) til þess að nota undirliggjandi (TCP) tengingu í annað en hreint HTTP. Til dæmis dulkóðað HTTP, **HTTPS**.
;HEAD: Sækja haus sem hefði fylgt skjali sóttu með GET.
;PUT: Senda nýja útgáfu af skjali.
;DELETE: Eyða skjali.
;TRACE: Fá beiðnina endursenda. Notað til að athuga hvort beiðni hefði verið breytt á leiðinni.
;OPTIONS: Spyrja hvers konar beiðnir eru studdar.

## Heimildir


 (sem vísar einnig á ensku Wikipediu)