Ga naar hoofdinhoud

HTTP als protocol

HTTP (HyperText Transfer Protocol) is het communicatieprotocol waarmee browsers, apps en servers gegevens uitwisselen over het web. Elke keer dat je een webpagina bezoekt, op een knop klikt of data invult in een formulier, sturen browser en server berichten naar elkaar volgens dezelfde vaste afspraak. Dat protocol beschrijft precies hoe een request (aanvraag) en een response (antwoord) eruitzien.

HTTP is een applicatieprotocol en bouwt op TCP: een HTTP-verbinding wordt opgezet over een TCP-verbinding, wat betrouwbare en geordende aflevering van data garandeert. Standaard werkt HTTP op poort 80; de beveiligde variant HTTPS op poort 443.

Client en server

HTTP werkt altijd tussen een client en een server:

  • De client (browser, app, curl, …) neemt het initiatief: hij stuurt een request.
  • De server (nginx, Apache, een cloud-dienst, …) wacht tot een request binnenkomt en stuurt een response terug.

Request/response-verkeer tussen client en server

Op elk request volgt exact één response. Nooit meer, nooit minder.

HTTP in het TCP/IP-model

HTTP bevindt zich in de applicatielaag, bovenop TCP (transportlaag) en IP (internetlaag). Zie het TCP/IP-model voor de volledige laagindeling.

LaagProtocolTaak
ApplicatieHTTP/HTTPSVerzoeken en antwoorden formuleren
TransportTCPBetrouwbare verbinding, pakketvolgorde
InternetIPAdressering en routering
NetwerktoegangEthernet / Wi-FiFysieke overdracht

Een domeinnaam wordt via DNS vertaald naar een IP-adres vóór de TCP-verbinding tot stand komt.

HTTP/1.1 vs. HTTP/2 vs. HTTP/3

De meeste servers spreken tegenwoordig HTTP/2 of HTTP/3, maar de kernconcepten (het adres, wat je wil doen, het resultaat en de extra informatie) blijven dezelfde. Voor deze cursus volstaat HTTP/1.1 als referentiemodel.

Anatomie van een request

Een request bestaat altijd uit vier onderdelen:

OnderdeelVoorbeeldBetekenis
MethodGETWat de client wil doen
URL/posts/1Welke resource het betreft
HeadersAccept: application/jsonMetadata over het request
Body(vaak leeg bij GET)De meegestuurde data

Bekeken als tekst ziet een GET-request er zo uit:

GET /posts/1 HTTP/1.1
Host: jsonplaceholder.typicode.com
Accept: application/json

Anatomie van een response

Een response bestaat uit drie onderdelen:

OnderdeelVoorbeeldBetekenis
Statuscode200 OKHet resultaat van het request
HeadersContent-Type: application/jsonMetadata over de response
Body{ "id": 1, "title": "..." }De opgevraagde of bevestigde data
HTTP/1.1 200 OK
Content-Type: application/json

{
"id": 1,
"title": "sunt aut facere...",
"body": "quia et suscipit..."
}

Requests bekijken met curl

curl is een commandolijntool waarmee je zelf HTTP-requests stuurt. Met de -v (verbose) vlag toont curl zowel het request als de response:

curl -v https://jsonplaceholder.typicode.com/posts/1
> GET /posts/1 HTTP/1.1
> Host: jsonplaceholder.typicode.com
>
< HTTP/1.1 200 OK
< Content-Type: application/json
<
{ "id": 1, "title": "...", "body": "..." }

De regels met > zijn wat jij verstuurt, de regels met < zijn wat de server terugstuurt.

Een POST-request stuur je met -X POST, een Content-Type-header en een body via -d:

curl -X POST https://jsonplaceholder.typicode.com/posts \
-H "Content-Type: application/json" \
-d '{"title": "Mijn post", "body": "Inhoud", "userId": 1}'

De server bevestigt de aangemaakte resource, meestal met een nieuw toegekend id:

{
"title": "Mijn post",
"body": "Inhoud",
"userId": 1,
"id": 101
}
Postman

Alles wat je met curl kan, kan ook visueel in Postman: methode kiezen, headers instellen, body invullen, en de response bekijken in een overzichtelijk paneel. Beide tools tonen exact hetzelfde HTTP-verkeer — enkel de weergave verschilt.

Dezelfde requests in DevTools

De Network tab van je browser (F12 → Network) toont elk request dat een pagina uitvoert. Klik een request aan om het te ontleden:

TabbladWat je er vindt
HeadersMethod, URL, statuscode, request- en response headers
PayloadDe body die verstuurd werd (bij POST/PUT)
ResponseDe body die ontvangen werd
TimingHoelang elke fase van het request duurde

Alles wat curl toont in tekst, toont de Network tab visueel — het is dezelfde informatie.

Onthoud
  • HTTP is een applicatieprotocol dat bovenop TCP draait, standaardpoort 80 (HTTP) en 443 (HTTPS).
  • De client stuurt een request; de server stuurt een response terug — altijd één op één.
  • Een request bestaat uit method, URL, headers en body; een response uit statuscode, headers en body.
  • curl -v en de browser Network tab tonen exact hetzelfde HTTP-verkeer, in tekst of visueel.

De volgende hoofdstukken werken elk onderdeel verder uit: eerst de URL zelf, dan de methoden, statuscodes, headers, JSON & REST en tot slot cookies, sessions & CORS.