Elke internetgebruiker wordt wel eens geconfronteerd met de boodschap“Error 404 – deze pagina bestaat niet“. Dit is een van de vele HTTP-statuscodes waarmee de server reageert op het verzoek van de cliënt. Deze bestaan uit een getal van drie cijfers en geven informatie over het al dan niet slagen van een verzoek. In dit artikel hebben we de belangrijkste HTTP-statuscodes en hun betekenis voor u samengevat.
Dit is het antwoord van een server op een HTTP-verzoek van een client. Dit is meestal een webbrowser (bijv. Chrome, Firefox of Opera).
Het eerste cijfer van de driecijferige codes staat voor de statusklasse (bv. “Serverfout” of “Geslaagde bewerking”). Ze worden ook ingedeeld in verschillende RFC-documenten (“Request for Comments”).
De webbrowser geeft de statuscodes meestal niet weer. Om ze te observeren hebt u speciale tools of overeenkomstige browserextensies nodig.
De belangrijkste HTTP-statuscodes in één oogopslag
1xx: Informatieve codes
Code |
Bericht |
HTTP-versie |
Beschrijving |
100 |
Doorgaan |
1.1 |
Het verzoek is geaccepteerd maar wordt nog verwerkt. De server wacht op verdere verzoeken van de client. |
101 |
Protocollen schakelen |
1.1 |
Deze code wordt gewoonlijk aan de clientzijde gevraagd en geeft aan dat de server instemt met een protocolverandering (bv. van HTTP naar een ander protocol). |
102 |
Verwerking |
2.0 |
Wordt gebruikt om time-outs te vermijden terwijl de server tijdsintensieve verzoeken verwerkt (bv. als gevolg van een WebDAV-verzoek met meerdere subverzoeken). |
Goed om te weten: WebDAV (Web-based Distributed Authoring and Versioning) is ontwikkeld om documenten en bestanden binnen een netwerk op basis van HTTP te bewerken en te wijzigen.
2xx: Geslaagde operaties
Code |
Bericht |
HTTP-versie |
Beschrijving |
200 |
OK |
1.0 / 1.1 |
Het verzoek was succesvol. Het resultaat wordt samen met het antwoord verzonden. |
201 |
Aangemaakt |
1.0 / 1.1 |
Een nieuwe bron is aangemaakt en inmiddels geladen. Een code 201 wordt typisch verzonden als antwoord van de server op een zogenaamd PUT-verzoek. |
202 |
Geaccepteerd |
1.0 / 1.1 |
Het clientverzoek werd aanvaard, maar zal pas later worden uitgevoerd. |
203 |
Niet gezaghebbende informatie |
1.0 / 1.1 |
De server neemt de rol aan van een zogenaamde “transformerende proxy”. Hij ontvangt een code 200 van de bron en levert vervolgens een gewijzigde versie van het antwoord (van de bron). |
204 |
Geen inhoud |
1.0 / 1.1 |
Het verzoek was succesvol, maar het antwoord bevat (bewust) geen gegevens. De oude inhoud moet nog steeds aan de clients worden getoond. |
205 |
Inhoud opnieuw instellen |
1.1. |
Het verzoek was succesvol. De client moet het document opnieuw laden en de formuliergegevens opnieuw instellen. |
206 |
Gedeeltelijke inhoud |
1.1. |
Als de client een zogenaamd “Range Header”-verzoek stuurt, antwoordt de server met code 206 en informeert over de overdracht van delen van de gevraagde bron. Een typisch voorbeeld hiervan zijn onderbroken en hervatte downloads. |
207 |
Multi-status |
2.0. |
Het antwoord bevat een XML-document met meerdere statuscodes voor onafhankelijke operaties. |
208 |
Reeds gemeld |
1.1 |
De code 208 wordt gebruikt binnen een WebDAV-binding en geeft aan dat de leden van de binding eerder zijn opgesomd en daarom niet meer aanwezig zijn in dit antwoord. |
226 |
IM gebruikt |
De server heeft een GET-verzoek uitgevoerd. Het antwoord bevat het resultaat van een of meer manipulaties van deze instantie. |
3xx: omleidingen
Code |
Bericht |
HTTP versie |
Beschrijving |
300 |
Meerdere keuzes |
1.1 |
De gevraagde bron is beschikbaar in meerdere types. Het antwoord bevat een lijst van de mogelijke varianten. |
301 |
Permanent verplaatst |
1.0 / 1.1 |
Code 301 (Redirect) geeft aan dat de gevraagde bron in de toekomst beschikbaar zal zijn op het adres dat in het headerveld “Locatie” is opgegeven. Het oude adres is niet langer geldig. |
302 |
Gevonden (tijdelijk verplaatst) |
1.0 / 1.1 |
Volgens statuscode 302 is de bron tijdelijk beschikbaar op het in de header gespecificeerde adres. Het oude adres blijft echter geldig. |
303 |
Zie Andere |
1.1 |
Het antwoord van de server kan worden opgehaald onder een ander URI-adres met behulp van de GET-methode. Dit maakt een naadloze overgang naar een geselecteerde bron mogelijk na een POST-verzoek. |
304 |
Niet gewijzigd |
1.0 / 1.1 |
De statuscode 304 geeft aan dat de inhoud van de opgevraagde bron niet is gewijzigd sinds het laatste verzoek. Daarom bevat het antwoord geen gegevens. |
305 |
Proxy gebruiken |
1.1 |
De bron is alleen toegankelijk via de in de “Locatie”-header opgegeven proxy. |
306 |
(ongebruikt) |
1.1 |
De statuscode 306 is gereserveerd, maar wordt niet langer gebruikt. Hij werd oorspronkelijk gebruikt voor het antwoord “Switch Proxy”. |
307 |
Tijdelijke omleiding |
1.1 |
De gevraagde bron werd gevonden en is tijdelijk beschikbaar op het adres dat in het headerveld “Location” is opgegeven. Het oude adres blijft echter geldig. De browser moet dezelfde methode volgen als bij het oorspronkelijke verzoek. |
308 |
Permanente omleiding |
De gevraagde bron werd gevonden en is tijdelijk beschikbaar op het adres dat in het headerveld “Locatie” is opgegeven. Het oude adres is niet langer geldig. De volgende browseraanvragen moeten op dezelfde manier worden gedaan als het oorspronkelijke verzoek. |
4xx: Klantfout
Code |
Bericht |
HTTP-versie |
Beschrijving |
400 |
Slechte aanvraag |
1.0 / 1.1 |
Het verzoek was fout, daarom kan het niet worden verwerkt door de server. |
401 |
Onbevoegd |
1.0 / 1.1 |
Het verzoek kan niet worden verwerkt zonder de juiste autorisatie. De WWW_Authenticate response header legt uit hoe de authenticatie moet worden uitgevoerd. |
402 |
Betaling vereist |
1.1 |
Betaling vereist. De statuscode is gereserveerd voor toekomstig gebruik. |
403 |
Verboden |
1.0 / 1.1 |
HTTP-fout 403 geeft aan dat de toegang tot de inhoud permanent verboden is wegens gebrek aan autorisatie van de client. Het verzoek mag niet meer worden gedaan. |
404 |
Niet gevonden |
1.0 / 1.1 |
De server kon de gevraagde bron niet vinden. In de meeste gevallen wordt dit veroorzaakt door een zogenaamde “dode link”. |
405 |
Methode niet toegestaan |
1.1 |
Statuscode 405 betekent dat de verzoekmethode niet is toegestaan en alleen met andere methoden (bijvoorbeeld GET of POST) mag worden gedaan. |
406 |
Niet toegestaan |
1.1 |
Statuscode 406 geeft aan dat de gevraagde bron niet wordt geleverd in de door de client gevraagde vorm. |
407 |
Proxy-authenticatie vereist |
1.1 |
Vergelijkbaar met statuscode 401 vereist dit antwoord authenticatie. In dit geval moet de client zich echter identificeren bij een proxy, die het antwoordveld Proxy Authenticate moet bevatten. |
408 |
Time-out verzoek |
1.1 |
De client heeft de aanvraag niet binnen de door de server gespecificeerde tijd voltooid. HTTP-fout 408 komt bijvoorbeeld voor bij het uploaden van grote bestanden. |
409 |
Conflict |
1.1 |
Het verzoek is gedaan onder verkeerde aannames en kan niet worden verwerkt, anders zou er een conflict ontstaan bij de aanvragende bron. In het geval van een PUT-verzoek kan dit bijvoorbeeld het gevolg zijn van een wijziging die een derde in de tussentijd in de bron heeft aangebracht. |
410 |
Verdwenen |
1.1 |
De bron bestaat niet meer en is permanent verwijderd. |
411 |
Lengte Vereist |
1.1 |
Verwerking van het verzoek zonder “Content-Length” header wordt door de server afgewezen. |
412 |
Preconditie mislukt |
1.1 |
Aan een door de cliënt gespecificeerde voorwaarde kan niet worden voldaan. |
413 |
Verzoek entiteit te groot |
1.1 |
Het verzoek was te groot om door de server te worden verwerkt en wordt daarom afgewezen. Dit kan bijvoorbeeld worden veroorzaakt door een geüpload bestand. |
414 |
URI te lang |
1.1 |
De URL van het verzoek is te lang. |
415 |
Niet ondersteund mediatype |
1.1 |
Het gevraagde media- of MIME-type wordt niet ondersteund. |
416 |
Aangevraagd bereik niet bevredigbaar |
1.1 |
Het gevraagde subbereik van de bron bestaat niet of is ongeldig. Komt bijvoorbeeld voor bij gedeeltelijke downloads. |
417 |
Verwachting mislukt |
1.1 |
Wordt gebruikt in combinatie met een “Expect”-headerveld. Aan het door de client in het “Expect”-headerveld gevraagde gedrag van de server kan niet worden voldaan. |
420 |
Beleid niet vervuld |
1.1 |
Voorgesteld in W3C PEP (Working Draft 21 november 1997) om aan te geven dat aan een voorwaarde niet is voldaan. |
421 |
Foutief verzoek |
2.0 |
Het verzoek ging naar een server die niet in staat is een antwoord te sturen. |
422 |
Onverwerkbare entiteit |
1.1 |
Deze statuscode wordt gebruikt wanneer terugkeer van statuscode 415 noch 400 gerechtvaardigd zou zijn, maar verwerking van het verzoek wordt geweigerd (bijvoorbeeld vanwege semantische fouten). |
423 |
Vergrendeld |
1.1 |
De gevraagde bron is momenteel vergrendeld. |
424 |
Afhankelijkheid mislukt |
1.1 |
Het verzoek kon niet worden uitgevoerd omdat het een eerder verzoek nodig heeft om te slagen. |
426 |
Upgrade vereist |
1.1 |
De server staat erop dat de client de aanvraag herhaalt met een ander protocol. Een typisch geval is het overschakelen op HTTP met Transport Layer Security. |
428 |
Voorwaarde Vereist |
1.1 |
Aan de voor het verzoek vereiste randvoorwaarden is niet allemaal voldaan. |
429 |
Te veel verzoeken |
1.1 |
De cliënt heeft te veel verzoeken gedaan binnen een bepaalde periode. |
431 |
Request Header Fields Too Large |
1.1 |
De maximale lengte van een headerveld of de totale header is overschreden. |
451 |
Niet beschikbaar om wettelijke redenen |
1.1 |
De bron is niet beschikbaar om juridische redenen (bijvoorbeeld vanwege auteursrechten of censuur in bepaalde landen). De statuscode werd in 2015 geïntroduceerd en is genoemd naar de roman “Fahrenheit 451” van Ray Bradbury. |
Goed om te weten: Met status 418 is er nog een code in de categorie client error. Binnen een niet geheel serieus protocol voor het zetten van koffie (Hyper Text Coffee Pot Control Protocol) geeft dit aan dat er per ongeluk een theepot is gebruikt in plaats van een koffiepot. De statuscode maakt echter geen deel uit van HTTP en is ook niet gedefinieerd in de SCR (“Status Code Registry”).
5xx: Serverfout
Code |
Bericht |
HTTP-versie |
Beschrijving |
500 |
Interne Serverfout |
1.0 / 1.1 |
Statuscode 500 wordt weergegeven als het verzoek niet kan worden uitgevoerd wegens een interne (server)fout. |
501 |
Niet geïmplementeerd |
1.0 / 1.1 |
De server beschikt niet over de nodige functionaliteit om het verzoek te verwerken. De oorzaak is vaak een onbekende of niet-ondersteunde HTTP-methode. |
502 |
Slechte gateway |
1.0 / 1.1 |
HTTP-fout 502 betekent dat de server zijn functie als gateway of proxy niet kon vervullen omdat er verderop een fout is opgetreden. |
503 |
Dienst niet beschikbaar |
1.0 / 1.1 |
De dienst of server is momenteel niet beschikbaar. Dit is bijvoorbeeld het geval tijdens onderhoudswerkzaamheden of overbelasting, enz. |
504 |
Time-out gateway |
1.1 |
Het verzoek kan niet worden verwerkt door de proxy vanwege een time-out. |
505 |
HTTP-versie niet ondersteund |
1.1 |
De gevraagde HTTP-versie wordt niet ondersteund. |
506 |
Variant onderhandelt ook |
De inhoudsovereenkomst van het verzoek resulteert in een circulaire verwijzing. |
|
507 |
Onvoldoende opslag |
Het verzoek kon niet worden verwerkt omdat de momenteel beschikbare opslagruimte van de server onvoldoende is. |
|
508 |
Lus gedetecteerd |
De bewerking is niet uitgevoerd omdat de uitvoering in een oneindige lus zou zijn beland. De statuscode is gedefinieerd in de bindingsuitbreiding voor WebDAV (volgens RFC 5842), omdat bindingen cyclische paden naar WebDAV-bronnen kunnen creëren. |
|
509 |
Bandbreedtelimiet overschreden |
Het verzoek van de client is afgewezen omdat anders de beschikbare bandbreedte zou zijn overschreden. Deze statuscode is een onofficiële uitbreiding van sommige servers. |
|
510 |
Niet uitgebreid |
Het verzoek bevat niet alle informatie die de gevraagde serveruitbreiding verplicht verwacht (RFC 2774). |
|
511 |
Netwerkverificatie vereist |
De client moet zich eerst authenticeren voordat hij toegang krijgt tot het netwerk. |
Opmerking: Sommige softwarefabrikanten gebruiken eigen HTTP-statuscodes, die genummerd zijn vanaf 9XX. Dit nummerbereik is echter een speciaal geval dat niet wordt genoemd in de RFC-documenten en valt dus ook buiten de standaard.
In de volgende video worden de belangrijkste HTTP-statuscodes nogmaals uitgelegd: