Statuscodes
Elke response begint met drie cijfers die zeggen hoe het afliep:
HTTP/1.1 404 Not Found
Die code is het snelste diagnosemiddel dat je hebt. Nog voor je de body openklapt, weet je of het verzoek gelukt is, of je ergens anders moet zijn, of je zelf een fout maakte, of de server het liet afweten.
Het eerste cijfer zegt het meeste
| Categorie | Bereik | Betekenis | Wie moet er iets aan doen |
|---|---|---|---|
| 1xx Informatief | 100–199 | Tussenstand, zelden zichtbaar | Niemand |
| 2xx Succes | 200–299 | Gelukt | Niemand |
| 3xx Omleiding | 300–399 | De bron zit elders, of is niet gewijzigd | De client volgt automatisch |
| 4xx Clientfout | 400–499 | Er is iets mis met jouw verzoek | Jij |
| 5xx Serverfout | 500–599 | De server kon het niet verwerken | De beheerder van de server |
Die laatste kolom is de kern. Zie je een 4xx, kijk dan naar je eigen request: klopt de URL, de methode, de headers, de body? Zie je een 5xx, dan is er weinig aan je request te repareren; het probleem zit aan de overkant.
2xx: gelukt
| Code | Naam | Wanneer je ze ziet |
|---|---|---|
| 200 | OK | De standaard: gevonden en meegestuurd |
| 201 | Created | Na een POST die iets aanmaakte; het adres van de nieuwe bron staat in de Location-header |
| 204 | No Content | Gelukt, maar er valt niets te tonen. Typisch na een DELETE |
3xx: elders, of ongewijzigd
| Code | Naam | Wanneer je ze ziet |
|---|---|---|
| 301 | Moved Permanently | Definitief verhuisd. Browsers en zoekmachines onthouden het nieuwe adres |
| 302 | Found | Tijdelijk elders. Het oude adres blijft het juiste |
| 304 | Not Modified | Niets veranderd sinds je vorige bezoek: gebruik je eigen kopie |
Bij 301 en 302 staat het nieuwe adres in de Location-header, en volgt je browser die automatisch. In de Network tab zie je dat enkel als Preserve log aanstaat; anders is de eerste regel al weg voor je kijkt.
Gebruik 301 bij een echte verhuizing, bijvoorbeeld van http:// naar https:// of na een herstructurering van je URL's. Gebruik 302 voor iets tijdelijks, zoals een onderhoudspagina of een omleiding naar een inlogscherm. Een verkeerde 301 is lastig: browsers onthouden ze, ook nadat je de fout hersteld hebt.
304 heb je al gezien bij het bekijken van netwerkverkeer: het is de code die verschijnt bij een tweede refresh, met disk cache in de kolom Size.
4xx: jouw verzoek klopt niet
| Code | Naam | Eerste controle |
|---|---|---|
| 400 | Bad Request | Is je JSON geldig? Staat Content-Type correct? |
| 401 | Unauthorized | Stuur je een Authorization-header of een geldige sessie mee? |
| 403 | Forbidden | Je bent herkend, maar mag dit niet. Klopt je rol of je token? |
| 404 | Not Found | Klopt het pad? Bestaat het id dat je opvraagt? |
| 405 | Method Not Allowed | Bestaat het pad wel, maar niet met deze methode? |
| 409 | Conflict | Bestaat het al, bijvoorbeeld een gebruiker met dat e-mailadres? |
| 429 | Too Many Requests | Te veel verzoeken. Kijk naar de Retry-After-header |
401 betekent: ik weet niet wie je bent, meld je aan. 403 betekent: ik weet wie je bent, en je mag dit niet. Krijg je 401 terwijl je zeker ingelogd bent, controleer dan of je token effectief meegestuurd wordt: in de Network tab, bij Request Headers.
5xx: de server liet het afweten
| Code | Naam | Wat er meestal aan de hand is |
|---|---|---|
| 500 | Internal Server Error | Een onverwerkte fout in de servercode |
| 502 | Bad Gateway | Een proxy of load balancer kreeg onzin van de server erachter |
| 503 | Service Unavailable | Overbelast of in onderhoud |
| 504 | Gateway Timeout | De server erachter antwoordde niet op tijd |
Bij 502, 503 en 504 is er een tussenpersoon in het spel: nginx, een load balancer, een cloudplatform. De vraag raakte tot daar, maar de eigenlijke applicatie antwoordde niet of niet correct.
Test jezelf: welke categorie?
201 Created na een POST naar /posts404 Not Found op /api/gebruikers500 Internal Server Error na het versturen van een formulier301 Moved Permanently van http:// naar https://Authorization-header en krijgt 401304 Not Modified bij een tweede refresh van dezelfde pagina503 Service Unavailable tijdens een onderhoudsvenster204 No Content na een geslaagde DELETEStatuscodes aflezen
In de Network tab staat de code in de kolom Status, en bovenaan bij Headers → General. Met curl heb je twee handige vormen:
curl -I https://voorbeeld.be # Enkel de statuslijn en de headers
curl -o /dev/null -s -w "%{http_code}\n" https://voorbeeld.be # Enkel het getal
De tweede is bruikbaar in scripts: -o /dev/null gooit de body weg, -s onderdrukt de voortgangsbalk, en -w drukt enkel de code af.
curl volgt standaard geen omleidingen. Met -L doet hij dat wel, en met -v zie je elke tussenstap:
curl -IL http://ap.be
Je ziet dan eerst een 301 met een Location-header, en pas daarna de 200 van de uiteindelijke pagina.
Alles op één blad. De kleur zegt meteen wie er iets aan moet doen: groen en amber vragen niets van jou, rood wijst naar jouw request, donker naar de server.
- 2xx gelukt, 3xx omleiding, 4xx fout in jouw verzoek, 5xx fout bij de server.
- Ken minstens:
200,201,204,301,302,304,400,401,403,404,500,503. 401= niet aangemeld,403= aangemeld maar geen toegang.- Bij een omleiding staat het nieuwe adres in de
Location-header; zet Preserve log aan om ze te zien. - Een 4xx repareer je zelf, bij een 5xx kijk je naar de server.