Spring til indhold
Academi.dk

Web og HTTP

HTTP-protokollen

Let øvet DA↔EN-ordliste

HTTP er reglerne for, hvordan en browser og en server taler sammen. Browseren sender en forespørgsel med en metode og en adresse, og serveren sender et svar med en statuskode og noget indhold. Hver forespørgsel står alene. Serveren husker ikke den forrige.

En samtale med to replikker

Alt, hvad der sker på nettet, følger den samme form: browseren spørger, serveren svarer. Så er den samtale slut.

En forespørgsel ser sådan her ud, når man skræller alt væk:

GET /studerende/12 HTTP/1.1
Host: eksempel.dk
Accept: application/json

Og svaret:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 48

{"id":12,"navn":"Ida","linje":"HA(it.)"}

Fire dele i hver: metoden og adressen, en række headers, en tom linje, og eventuelt et indhold. I svaret er første linje statuskoden i stedet.

Metoderne

MetodeBetyderÆndrer data?
GEThent nogetnej
POSTopret noget nytja
PUTerstat noget eksisterendeja
PATCHret en del af nogetja
DELETEslet nogetja

Den vigtigste skelnen i praksis er GET mod POST:

  • GET lægger sine data i adressen: ?soeg=ida&side=2. Det kan ses i historikken, deles i et link og gemmes i cachen. Derfor: aldrig adgangskoder eller personoplysninger i en GET.
  • POST lægger sine data i indholdet. Det er ikke kryptering, kun HTTPS krypterer, men det ryger ikke i adresselinjen og bliver ikke cachet.

At GET ikke må ændre noget, er en aftale, ikke en teknisk spærre. Bryder man den, sletter en søgemaskine, der bare følger links, pludselig data.

Headers

Headers er ekstra oplysninger om forespørgslen eller svaret. Dem, du møder først:

  • Content-Type. Hvilket format indholdet er i, for eksempel application/json.
  • Accept, hvilket format klienten gerne vil have.
  • Authorization, legitimation, typisk en nøgle eller et token.
  • Cache-Control, hvor længe svaret må genbruges.

Protokollen husker ingenting

HTTP er tilstandsløs: serveren husker ikke, at det var dig, der spurgte for et øjeblik siden. Hver forespørgsel skal selv bære alt, hvad der skal til for at forstå den.

Det er derfor, der findes cookies og tokens. De sendes med hver eneste gang og genskaber det, protokollen ikke husker. Det er også derfor, en session kan udløbe: den ligger et sted, der har sin egen levetid.

Sådan ser du det selv

Åbn browserens udviklerværktøjer og gå til fanen Netværk. Genindlæs siden. Nu kan du se hver eneste forespørgsel: metode, adresse, statuskode, størrelse og tid. Klik på en af dem, og du kan se headers og indhold.

Det er den hurtigste vej til at fejlfinde et API-kald, der ikke virker: gik forespørgslen overhovedet af sted, og hvad svarede serveren?

Kort opsamling

  • Forespørgsel og svar, hver gang.
  • GET henter, POST opretter; GET-data står i adressen.
  • Headers beskriver indholdet og afsenderen.
  • Serveren husker ikke noget mellem to forespørgsler.

Læs videre

Senest gennemgået .