HTTP statuscodes zijn kleine notities van een server die aan een website toegevoegd worden. Ze zijn geen onderdeel van de inhoud van de site. Het zijn berichten van de server die jou laten weten hoe het verzoek om een bepaalde pagina te bekijken behandeld is.
Iedere keer dat je browser een interactie met een server heeft, wordt zo’n bericht teruggestuurd, zelfs als je ze niet rechtstreeks kan zien. Als je zelf een website hebt of een developer bent, is het begrijpen van HTTP statuscodes erg belangrijk. Als deze codes gegenereerd worden, is het begrijpen ervan een essentieel hulpmiddel voor het vaststellen en verhelpen van configuratiefouten op de website.
Dit artikel introduceert meerdere status- en foutcodes op serverniveau en geeft uitleg over wat er precies achter de schermen van een server gebeurt.
Laten we beginnen!
Liever de videoversie kijken?
Wat zijn HTTP statuscodes?
Iedere keer dat je op een link klikt of een URL intypt en Enter indrukt, stuurt jouw browser een verzoek naar de webserver van de site die je op dat moment aan het gebruiken bent. De server ontvangt en verwerkt het verzoek en stuurt de relevante benodigdheden terug met een HTTP header.
HTTP statuscodes worden naar de browser gestuurd in een HTTP header. Alhoewel deze statuscodes iedere keer worden gestuurd als jouw browser een nieuwe webpagina of resource aanvraagt, zie je ze meestal niet.
Eigenlijk alleen als er iets fout gaat, krijg je er een melding van in je browser. Op deze manier probeert de server jou te vertellen: “Er klopt iets niet. Hier is een code die uitlegt wat er fout is gegaan.”
Als je de statuscodes wilt zien die jouw browser normaal gesproken verbergt, zijn er veel verschillende tools die dat makkelijk maken. Browser extensies zijn beschikbaar voor developer-vriendelijke platformen zoals Chrome en FireFox, en er zijn veel web-gebaseerde tools die headers kunnen ophalen zoals Web Sniffer.
Om met één van deze tools de HTTP statuscodes te kunnen zien, zoek dan naar de tekst rechts bovenaan het scherm waar staat “Status: HTTP/1.1”. Hierna volgt dan de statuscode die terug werd gestuurd door de server.
Begrijpen van klassen binnen HTTP statuscodes
HTTP statuscodes zijn onderverdeeld in 5 klassen, ook wel “classes” genoemd. Ze worden bij elkaar onderverdeeld op basis van gelijksoortige of gerelateerde betekenissen. Als je weet wat deze classes inhouden kun je gemakkelijk een beeld krijgen van wat de statuscode inhoudt voordat je überhaupt naar de exacte betekenis gekeken hebt.
Deze vijf klassen zijn:
- 100: Codes die informatie geven over dat het verzoek naar de server uitgevoerd wordt.
- 200: Succescodes die teruggestuurd worden als het verzoek van de browser ontvangen, begrepen en verwerkt is door de server.
- 300: Omleidingscodes die teruggestuurd worden als de verzochte resource vervangen is door een andere.
- 400: Client errorcodes die aangeven dat er een probleem was met het verzoek.
- 500: Server errorcodes die aangeven dat het verzoek wel ontvangen was maar dat een er een error op de server is die de uitvoering ervan niet mogelijk maakte.
Binnen deze classes zijn er verschillende codes die teruggestuurd kunnen worden door de server. Elke individuele code heeft een specifieke en unieke betekenis, deze betekenissen worden dadelijk in een uitgebreide lijst doorgenomen.
Waarom HTTP Statuscodes en Errors belangrijk zijn voor Search Engine Optimization (SEO)
Zoekmachinebots zien HTTP statuscodes wanneer ze jouw site aan het crawlen zijn. In sommige gevallen kunnen deze codes van invloed zijn op hoe en of jouw pagina’s geïndexeerd worden, en hoe zoekmachines de gezondheid van jouw site zien.
Over het algemeen zullen HTTP statuscodes van het niveau 100 en 200 statuscodes niet heel veel impact hebben op jouw SEO. Zij geven het signaal af dat alles op jouw site werkt zoals het zou moeten, en dat de zoekmachinebots door kunnen gaan. Aan de andere kant is het wel zo dat ze dus jouw ranking ook niet omhoog zullen helpen.
Over het algemeen zijn het de codes met de hogere cijfers die er echt toe doen voor SEO. Responses van de 400 en 500 kunnen voorkomen dat bots jouw site crawlen en de pagina indexeren. Te veel van deze errors kunnen aangeven dat jouw site niet van hoge kwaliteit is en dus een negatieve impact op jouw ranking hebben.
Codes met 300 zijn iets ingewikkelder wat betreft de impact die ze hebben op SEO. Het belangrijkste wat je hier over moet weten is dat de impact van deze codes ervan afhangt hoe permanent de omleiding is, dit zal verderop uitgebreider behandeld worden.
In het kort, permanente omleidingen delen link equity met backlinks, en tijdelijke omleidingen doen dat niet. Kortom als je tijdelijke omleidingen gebruikt voor pagina’s die verplaatst zijn, verlies je de SEO voordelen voor het opbouwen van al jouw links.
HTTP statuscodes bekijken in Google Search Console
Een manier om te zien hoe Google de HTTP statuscodes van jouw site beoordeeld, is om Google Search Console te gebruiken. Hier kan je de statuscodes van 300, 400 en 500 zien in het Coverage report:
In dit gedeelte van het dashboard kan je vier types content van jouw site zien:
- Pagina’s die errors opleveren.
- Goedgekeurde pagina’s die waarschuwingen bevatten.
- Benodigdheden die goedgekeurd zijn.
- Inhoud die uit de index gelaten is.
Je kan de pagina’s met 300-, 400, en 500 level HTTP statuscodes vinden onder de Excluded, Error, of Valid with warnings kopjes. Dit is afhankelijk van het type code. 301 omleidingen kan je bijvoorbeeld vinden onder Excluded als Page with redirect:
400 en 500 level statuscodes staan waarschijnlijk onder Error.
Een alternatieve manier om HTTP statuscodes te zien is door de URL Inspection tool te gebruiken. Als het Google niet gelukt is om een specifieke pagina te indexeren dan kan je het daar zien:
Voor meer tips om Google Search Console te gebruiken, bekijk dan onze begrijpelijke handleiding voor dit platform.
Een complete handleiding en lijst van HTTP statuscodes
Alhoewel er meer dan 40 verschillende server statuscodes zijn zul je er waarschijnlijk maar een paar regelmatig tegenkomen. Hieronder komen de algemenere statuscodes aan bod, maar ook de iets obscuurdere codes die je nog steeds tegen kan komen.
100 statuscodes
Een 100-level statuscode betekent dat het verzoek wat je aan de server hebt gemaakt, nog steeds in behandeling is. Dit hoeft niet noodzakelijk een probleem te zijn, maar is extra informatie die jou laat weten wat er aan de hand is.
- 100: “Continue.” Dit betekent dat de server de header van jouw verzoek ontvangen heeft en er klaar voor is om de body te ontvangen. Dit maakt het verzoek proces efficiënter aangezien het voorkomt dat de browser een body verzoek stuurt als de header afgekeurd is.
- 101: “Switching protocols.” Jouw browser heeft een verzoek gemaakt om van protocol te veranderen en de browser is ermee akkoord gegaan.
- 103: “Early hints.” Dit stuurt een responsheader voordat de rest van het antwoord van de server klaar is.
200 statuscodes
Dit zijn de fijnste HTTP statuscodes om te ontvangen. Een 200 respons betekent dat alles werkt zoals het zou moeten.
- 200: “Everything is OK.” Dit is de code die teruggestuurd wordt als de webpagina of resource precies doet wat het moet doen.
- 201: “Created.” De server heeft het verzoek van de browser uitgevoerd en heeft een nieuwe resource aangemaakt.
- 202: “Accepted.” De server heft het verzoek van de browser ontvangen, maar is het nog steeds aan het verwerken. Het verzoek kan uiteindelijk wel of niet een voltooid antwoord opleveren.
- 203: “Non-Authorative Information.” Deze statuscode kan verschijnen als er een proxy in gebruik is. Het betekent dat de proxyserver een 200 “Everything is OK.” statuscode heeft gekregen van de originele server, maar het heeft het antwoord aangepast voordat het naar jouw browser gestuurd wordt.
- 204: “No Content.” Dit betekent dat de server het verzoek succesvol verwerkt heeft, maar geen content terug gaat sturen.
- 205: “Reset Content.” Net als een 204 code betekent dit dat de browser het verzoek verwerkt heeft, maar geen content terug gaat sturen. Echter moet je browser ook de documentweergave resetten.
- 206: “Partial Content.” Je kan deze statuscode zien als jouw HTTP client (ook wel beter bekend als jouw browser) “range headers” gebruikt. Dit zorgt ervoor dat jouw browser gepauzeerde downloads voort kan zetten en een download in meerdere streams om kan zetten. Een 206 code wordt gestuurd als een range header er voor zorgt dat de server maar een gedeelte van het verzoek terugstuurt.
300 statuscodes
Omleiding is het proces dat gebruikt wordt om aan de te geven dat een pagina verplaatst is naar een nieuwe locatie. Er bestaan meerdere HTTP statuscodes die een omleiding vergezellen, zo krijgen de bezoekers informatie over waar degene is waar zij naar zoeken.
- 300: “Multiple Choices.” Soms heeft een server meerdere opties om jouw verzoek mee te beantwoorden. Een 300 statuscode geeft aan dat jouw browser tussen deze opties moet kiezen. Dit kan gebeuren als er meerdere type bestandextensies beschikbaar zijn, of als de server een woord ondubbelzinnig probeert te maken.
- 301: “The requested resource has been moved permanently.” Je ontvangt deze code als een webpagina of bestand permanent vervangen is door iets anders. Het wordt vooral gebruikt voor permanente URL omleidingen.
- 302: “The requested resource has moved, but was found.” Je ontvangt deze statuscode als de aangevraagde resource gevonden is, maar wel op een andere locatie. Het wordt meestal gebruikt voor tijdelijke URL omleidingen.
- 303: “See Other.” Het begrijpen van een 303 statuscode vereist dat je het verschil weet tussen de vier voornaamste HTTP verzoekmethodes. Eigenlijk vertelt een 303 status dat het de resource van het verzoek van jouw browser heeft gevonden via een POST, PUT of DELETE. Maar om de resource succesvol op te halen moet je een GET verzoek sturen naar een andere URL dan degene die je in eerste instantie gebruikt had.
- 304: “The requested resource has not been modified since the last time you accessed it.” Deze code vertelt de browser dat de resources die opgeslagen zijn in de browser cache niet veranderd zijn. Het wordt gebruikt om sneller webpagina’s te laden door al gedownloade informatie te gebruiken.
- 307: “Temporary Redirect.” Deze statuscode heeft de code 302 “Found.” vervangen als antwoord wanneer er een resource tijdelijk verplaatst is naar een nieuwe URL. In tegenstelling tot de 302 statuscode is het niet mogelijk om de HTTP methode te veranderen.
- 308: “Permanent Redirect.” De 308 statuscode is de opvolger van de 301 “Moved Permantently.” code. Het is niet mogelijk om de HTTP methode te veranderen en deze code duidt aan dat de aangevraagde resource permanent verplaatst is naar een nieuwe URL.
400 statuscodes
Op het 400 niveau beginnen HTTP statuscodes problematisch te worden. Dit zijn de error codes die aanduiden dat er iets fout is met jouw browser en/of verzoek.
- 400: “Bad Request.” De server kan geen antwoord terugsturen door een fout aan de kant van de client. Bekijk onze gids om deze fout op te lossen.
- 401: “Unauthorized” of “Authorization Required”. Dit wordt door de server teruggestuurd als de doelinhoud geen geldige authenticatiegegevens heeft. Je krijgt deze misschien te zien als je de basis HTTP authenticatie hebt aangemaakt met htpasswd.
- 402: “Payment Required.” Deze code was ooit bedacht om te gebruiken in een digitaal cash betalingssysteem. Maar dat plan is nooit helemaal uitgewerkt. In plaats daarvan wordt het door verschillende platformen gebruikt om aan te duiden dat het verzoek niet voltooid kan worden, meestal door een gebrek aan genoeg geld. Veelvoorkomende gevallen zijn:
- Je hebt het dagelijkse verzoek limiet bereikt van de Google Developers API.
- Je hebt jouw Shopify vergoedingen nog niet betaald en de winkel is tijdelijk gedeactiveerd.
- Jouw betaling via Stripe is niet gelukt of Stripe probeert een frauduleuze betaling te voorkomen.
- 403: “Access to that resource is forbidden.” Deze code wordt teruggestuurd als een gebruiker toegang probeert te krijgen tot iets waar zij geen toestemming voor hebben. Het bekijken van met een wachtwoord beschermde content kan een 403 error.
- 404: “The requested resources was not found.” Dit is het meest voorkomende foutbericht. Deze code betekent de aangevraagde resource niet bestaat en dat de server ook niet zeker weet of hij ooit bestaan heeft.
- 405: “Method not allowed.” Dit wordt gegenereerd als de hostende server (origin server) de methode wel ondersteund, maar de bedoelde resource niet.
- 406: “Not acceptable response.” De aangevraagde resource kan alleen inhoud genereren die niet aanvaardbaar is volgens de headers van het verzoek.
- 407: “Proxy Authentication Required.” Een proxyserver is in gebruik en verzoekt de browser om authenticatie aan te leveren voordat het doorgaat.
- 408: “The server timed out waiting for the rest of the request from the browser.” Deze code wordt gegenereerd als de server pauzeert om op het volledige verzoek van de browser te wachten. Oftewel, de server heeft niet het volledige verzoek ontvangen. Een mogelijke oorzaak hiervan kan overbelasting van het netwerk zijn wat er voor zorgt dat datapackets verloren gaan tussen de browser en de server.
- 409: “Conflict.” Een 409 statuscode betekent dat de server niet het verzoek van jouw browser kon verwerken omdat er een conflict was met de bedoelde resource. Dit kan soms voorkomen door meerdere gelijktijdige edits.
- 410: “The requested resource is gone and won’t be coming back.” Dit is soortgelijk als een 404 “Not Found.” code, alleen duidt de 410 code aan dat het resultaat verwacht en permanent is.
- 411: “Length Required.” Dit betekent dat de verzochte resource een lengte nodig heeft die de client aan moet duiden en dat dat niet gebeurd is.
- 412: “Precondition Failed.” Jouw browser heeft bepaalde voorwaardes in de header gespecificeerd en de server kon die voorwaarden niet nakomen.
- 413: “Payload Too Large” of “Request Entity Too Large.” Het verzoek is groter dan de server bereid of in staat is om te verwerken.
- 414: “URI Too Long.” Dit is meestal het resultaat van een GET verzoek dat gedefinieerd is als een querystring die de server niet kan verwerken omdat hij te groot is.
- 415: “Unsupported Media Type.” Dit verzoek heeft een mediatype die de server of resource niet ondersteunt.
- 416: “Range Not Satisfiable.” Een gedeelte van de resource van je verzoek kan de server niet ophalen.
- 417: “Expectation Failed.” De server kan niet voldoen aan de specificaties die in de header van je verzoek staan.
- 418: “I’m a teapot.” Deze code wordt teruggestuurd door theepotten die een verzoek krijgen om koffie te zetten. Het is een één April grap uit 1998.
- 422: “Unprocessable Entity.” Het verzoek van de client heeft semantische errors waardoor de server het verzoek niet kan verwerken.
- 425: “Too early.” Deze code wordt gestuurd als de server een verzoek niet wilt verwerken omdat het misschien herhaald wordt.
- 426: “Upgrade Required.” Wordt verzonden door de inhoud van het upgrade headerveld van het verzoek; de client moet wisselen naar een verschillend protocol.
- 428: “Precondition Required.” De server vereist dat er voorwaarden gespecificeerd worden voordat het verzoek behandeld wordt.
- 429: “Too many requests.” Dit wordt gegenereerd door de server als de user te veel verzoeken in een bepaalde tijd verstuurd heeft (rate-limiting). Dit kan soms gebeuren door bots of scripts die toegang tot je site proberen te krijgen. In dit geval is het handig om jouw WordPress login URL te veranderen. Je kan ook onze handleiding bekijken om een 429 “Too Much Requests” error te verhelpen.
- 431: “Request Header Fields Too Large.” De server kan het verzoek niet verwerken omdat de headervelden te groot zijn. Dit kan komen door één specifiek veld of door ze allemaal tegelijk.
- 451: “Unavailable for Legal Reasons.” De operator van de server heeft een verzoek gekregen om toegang tot de resource die je aanvraagt te verbieden (of een combinatie van resources waar jouw verzoek er één van aanvraagt). Leuk weetje: deze code is een verwijzing naar de roman van Ray Bradbury Fahrenheit 451.
- 499: “Client closed request.” Dit wordt teruggestuurd door NGINX als de client een verzoek sluit terwijl Nginx het nog steeds aan het verwerken is.
500 statuscodes
500-level statuscodes staan ook wel beter bekend als errors. Echter betekenen deze errors dat het probleem is voorgevallen op de server zelf. Deze eigenschap maakt ze wat moeilijker om op te lossen.
- 500: “There was an error on the server and the request could not be completed.” Deze algemene code betekent “interne server error”. Er is iets foutgegaan bij de server en de aangevraagde resource kon niet opgehaald worden. Deze code wordt over het algemeen gegenereerd door de plugin van een externe partij, een foutieve PHP of een onderbroken connectie met de database. Bekijk onze tutorials om de error te verhelpen een database connectie op te zetten en andere manieren om een 500 Internal Server Error op te lossen.
- 501: “Not implemented geïmplementeerd.” Deze error geeft aan dat de functionaleit die nodig is om een verzoek te voltooien niet ondersteund wordt door de server. Dit is bijna altijd een intern probleem met de server en moet door de host opgelost worden. Bekijk onze tutorial over hoe je een 501 Not Implemented Error op kan lossen.
- 502: “Bad Gateway.” Deze error code betekent over het algemeen dat één server een foutieve reactie heeft ontvangen van een andere server, dit kom vooral voor als proxyservers gebruikt worden. In andere gevallen duurt een query of verzoek te lang en wordt het afgebroken door de server en de verbinding met de database onderbroken. Voor meer details bekijk je onze diepgaande tutorial over hoe je een 502 Bad Gateway error kan verhelpen.
- 503: “De server kan op dit moment jouw verzoek niet verwerken.” Jouw verzoek kan nu niet verwerkt worden. Deze code kan verzonden worden door een server die overbelast is en geen extra verzoeken meer aankan. Wij hebben een volledige uitleg over hoe je een 503 Service Unavailable Error kan verhelpen.
- 504: “The server, acting as a gateway, timed out waiting for another server to respond.” Deze code wordt teruggestuurd als er twee servers bezig zijn om een verzoek te verwerken en de eerste server pauzeert omdat hij moest wachten op de tweede server om te reageren. Je kan meer te weten komen over hoe je 504 errors kan verhelpen in ons daarvoor bestemde handleiding.
- 505: “HTTP Version Not Supported.” De server ondersteunt de HTTP versie niet die de client gebruikt om het verzoek te maken
- 508: “Resource Limit Is Reached.” De limiet die door de webhost op de hoeveelheid resources zijn gezet is bereikt. Bekijk onze tutorial over hoe je de 508 Resource Limit is Reached kan verhelpen.
- 509: “Bandwidth Limit Exceeded” betekent dat je website meer bandbreedte gebruikt dan je hostingprovider toestaat.
- 511: “Network Authentication Required.” Deze statuscode wordt verstuurd als het netwerk waar je toegang tot wil verkrijgen authenticatie nodig heeft voordat het een verzoek naar de server stuurt. Je moet bijvoorbeeld misschien met de algemene voorwaarden van een Wi-Fi hotspot akkoord gaan.
- 521: “Web server is down.” Error 521 is een Cloudflare-specifiek errorbericht. Het betekent dat jouw browser succesvol was in een connectie met Cloudflare te maken, maar dat Cloudflare geen connectie kon maken met de origin webserver kon maken.
- 525: “SSL Handshake Failed“. Error 525 betekent dat de SSL handshake tussen een domein dat Cloudflare gebruikt en de origin webserver niet gelukt was. Als je dit probleem tegenkomt zijn er vijf mogelijkheden om error error 525 te verhelpen.
Waar kan je meer leren over HTTP statuscodes
In aanvulling op de HTTP statuscodes die in zijn lijst behandeld zijn, zijn er nog wat minder voorkomende codes waar je misschien nog wat meer over wilt weten. Voor deze codes zijn er verschillende bronnen waar je meer over ze kan lezen, waaronder:
- Deze uitgebreide lijst van HTTP statuscodes van Wikipedia.
- Statuscodedefinities van de Internet Engineering Task Force (IETF).
- RFC 7231.
Als je weet wat deze statuscodes inhouden, kan je specifieke problemen oplossen wanneer je je eigen website aan het onderhouden bent, of zelfs die je tegenkomt op andere websites.
Samenvatting
Alhoewel er ze er op het eerste gezicht misschien verwarrend of zelfs intimiderend uitzien, zijn HTTP statuscodes eigenlijk erg informatief. Door de meest veelvoorkomende errors te leren, kan je problemen op je site sneller verhelpen.
In dit artikel hebben wij meer dan 40+ HTTP statuscodes gedefinieerd. Van de mildere 100 en 200 codes tot de ingewikkeldere 400 en 500 errors, het begrijpen van deze berichten is cruciaal voor het onderhouden van jouw website en om er voor te zorgen dat deze goed toegankelijk is voor jouw gebruikers.
Laat een reactie achter