17 feb HTTP Status Codes
Auteur: Erwan Vrignaud
Leestijd: 27 minuten
Heb je je nou altijd wel eens afgevraagd waar al die codes voor staan die je soms tegenkomt op een website, of leest in een artikel of dat iemand dit in een gesprek nonchalant gebruikt en ervan uit gaat dat jij vast wel weet waar hij/zij het over heeft?
Nou, ik leef met je mee want dit heb ik al vaak ervaren. Vandaar dat ik ze eens allemaal heb opgezocht en ze hier in deze blog onder elkaar heb gezet. Al is het alleen maar voor mijn eigen nieuwsgierigheid. De codes komen in chronologische volgorde aan bod en er zit hier en daar technisch jargon tussen, maar globaal heb je dan in ieder geval wel een beeld waar het over gaat.
Daar gaan we:
100 Continue
De HTTP 100 Continue informationele statusresponscode geeft aan dat alles tot nu toe in orde is en dat de client moet doorgaan met het verzoek of het moet negeren als het al is voltooid.
101 Switching Protocols
De HTTP 101 Switching Protocols-responscode geeft een protocol aan waarnaar de server overschakelt. Het protocol wordt gespecificeerd in de Upgrade aanvraagheader die van een client is ontvangen.
103 Early Hints
De statuscode van de HTTP 103 Early Hints-informatierespons is in de eerste plaats bedoeld om met de Linkheader te worden gebruikt, zodat de user-agent kan beginnen met het vooraf laden van bronnen terwijl de server nog een reactie aan het voorbereiden is.
200 OK
De responscode van de HTTP -successtatus geeft aan dat de aanvraag is geslaagd. Een antwoord van 200 kan standaard in de cache worden opgeslagen.
201 Created
De responscode van de HTTP-successtatus geeft aan dat de aanvraag is geslaagd en heeft geleid tot het maken van een resource. De nieuwe bron wordt effectief gemaakt voordat dit antwoord wordt teruggestuurd en de nieuwe bron wordt geretourneerd in de hoofdtekst van het bericht. De locatie ofwel de URL van het verzoek is meestal de content van de koptekst.
202 Accepted
De antwoordstatuscode geeft aan dat het verzoek is geaccepteerd voor verwerking, maar dat de verwerking nog niet is voltooid. In feite is de verwerking mogelijk nog niet eens begonnen. Het verzoek kan uiteindelijk wel of niet worden ingewilligd, omdat het kan worden afgewezen wanneer de verwerking daadwerkelijk plaatsvindt.
203 Non-Authoritative Information
Deze code geeft aan dat het verzoek succesvol was, maar de bijgevoegde payload is gewijzigd door een transformerende proxy van die van de oorspronkelijke server 200 (OK) -respons .
204 No Content
Deze code geeft aan dat een aanvraag is geslaagd, maar dat de client niet weg hoeft te navigeren van de huidige pagina. Dit kan bijvoorbeeld worden gebruikt bij het implementeren van “opslaan en doorgaan met bewerken”-functionaliteit voor een open source website. In dit geval zou een verzoek worden gebruikt om de pagina op te slaan, en het 204 No Content antwoord zou worden verzonden om aan te geven dat de editor niet door een andere pagina moet worden vervangen.
205 Reset Content
De HTTP 205 Reset Content-reactiestatus vertelt de client dat de documentweergave opnieuw moet worden ingesteld, bijvoorbeeld om de inhoud van een formulier te wissen, een canvasstatus opnieuw in te stellen of de gebruikersinterface te vernieuwen.
206 Partial Content
De responscode van de HTTP -successtatus geeft aan dat de aanvraag is geslaagd en dat de hoofdtekst de gevraagde gegevens bevat, zoals beschreven in de aanvraag. Als er slechts één aanvraag is, wordt het hele antwoord ingesteld op het type document. Als er meerdere aanvragen worden teruggestuurd, wordt deze ingesteld op multipart/byteranges en bestrijkt elk fragment één aanvraag met de beschrijving ervan.
300 Multiple Choices
De responscode van de HTTP -omleidingsstatus geeft aan dat de aanvraag meer dan één mogelijke respons heeft. De user-agent of de gebruiker moet er een kiezen. Omdat er geen gestandaardiseerde manier is om een van de antwoorden te kiezen, wordt deze antwoordcode zeer zelden gebruikt.
301 Moved Permanently
Deze omleidingsstatus responscode geeft aan dat de aangevraagde bron definitief is verplaatst naar een nieuwe, permanente URL. Een browser leidt om naar de nieuwe URL en zoekmachines werken hun links naar de bron bij.
302 Found
Deze responscode geeft aan dat de aangevraagde bron tijdelijk is verplaatst naar een andere URL. Een browser verwijst door naar deze pagina, maar zoekmachines werken hun links naar de bron niet bij (in SEO-termen wordt gezegd dat de ‘link-juice’ niet naar de nieuwe URL wordt verzonden).
Zelfs als de specificatie vereist dat de methode (en de body) niet wordt gewijzigd wanneer de omleiding wordt uitgevoerd, voldoen niet alle user-agents hier – je kunt nog steeds dit soort software met fouten vinden. Het wordt daarom altijd aanbevolen om de 307 Temporary Redirect te gebruiken omdat het gebruik van de 302 in sommige gevallen expliciet verboden is.
303 See Other
Deze responscode geeft aan dat de omleidingen niet linken naar de nieuw geüploade bronnen, maar naar een andere pagina (zoals een bevestigingspagina of een voortgangspagina voor uploaden). Deze responscode wordt meestal teruggestuurd als gevolg van PUT of POST. De methode die wordt gebruikt om deze omgeleide pagina weer te geven is altijd GET.
304 Not Modified
Deze clientomleiding responscode geeft aan dat het niet nodig is om de gevraagde bronnen opnieuw te verzenden. Het is een impliciete omleiding naar een bron in de cache. Dit gebeurt wanneer de aanvraagmethode een veilige methode is, zoals GET of HEAD, of wanneer de aanvraag voorwaardelijk is.
307 Temporary Redirect
Deze omleidingsstatus responscode geeft aan dat de aangevraagde bron tijdelijk is verplaatst naar een andere URL. De methode en de hoofdtekst van het oorspronkelijke verzoek worden opnieuw gebruikt om de omleiding uit te voeren. Het enige verschil tussen 307en 302 is dat 307 garandeert dat de methode en de hoofdtekst niet worden gewijzigd wanneer de omleiding wordt gedaan. Met 302 veranderden sommige oude klanten de methode ten onrechte in GET en dat mag niet. De combinatie van GET methoden en 302 is dan onvoorspelbaar op het web, terwijl het gedrag met 307 altijd voorspelbaar is.
308 Permanent Redirect
Deze omleidingsstatus responscode geeft aan dat de aangevraagde bron definitief is verplaatst naar een andere URL. Een browser verwijst door naar deze pagina en zoekmachines werken hun links naar de bron bij (in ‘SEO-spreken’ wordt gezegd dat de ‘link-juice’ naar de nieuwe URL wordt verzonden).
Het probleem met HTTP-statuscode 308 is dat het relatief nieuw is en daarom niet door alle browsers en crawlers wordt ondersteund. In sommige gevallen wordt er gewoon een lege pagina weergegeven in plaats van de omleiding te volgen. Vanwege de nog steeds beperkte ondersteuning van 308, is de aanbeveling om altijd met 301-omleidingen te werken.
Niet bepaald de meest vriendelijke melding.
400 Bad Request
Deze responsstatuscode geeft aan dat de server het verzoek niet kan of wil verwerken vanwege iets dat wordt gezien als een clientfout (bijvoorbeeld een verkeerd opgemaakte syntaxis, ongeldige framing of misleidende routering).
401 Unauthorized
Deze antwoordstatuscode geeft aan dat het clientverzoek niet is voltooid omdat er geen geldige authenticatiereferenties voor de aangevraagde bron zijn. Deze statuscode wordt verzonden met een HTTP WWW-Authenticate-responsheader die informatie bevat over hoe de client de bron opnieuw kan aanvragen nadat de gebruiker om verificatiegegevens heeft gevraagd. Deze statuscode is vergelijkbaar met de 403 Forbidden statuscode, behalve dat in situaties die resulteren in deze statuscode, gebruikersauthenticatie toegang tot de bron kan verlenen.
402 Payment Required
De HTTP 402 Payment Required is een niet-standaard responsstatuscode die is gereserveerd voor toekomstig gebruik. Deze statuscode is gemaakt om digitale contant- of (micro)betalingssystemen mogelijk te maken en zou aangeven dat de gevraagde inhoud pas beschikbaar is als de klant een betaling heeft gedaan. Soms geeft deze statuscode aan dat het verzoek pas kan worden verwerkt als de klant een betaling heeft gedaan. Er bestaat geen standaard gebruiksconventie en verschillende entiteiten gebruiken het in verschillende contexten.
403 Forbidden
De HTTP 403 Forbidden-responsstatuscode geeft aan dat de server het verzoek begrijpt, maar weigert het te autoriseren. Deze status is vergelijkbaar met 401, maar voor de 403 Forbidden statuscode maakt opnieuw verifiëren geen verschil. De toegang is permanent verboden en gekoppeld aan het toepassingsscript, zoals onvoldoende rechten op een bron.
404 Not Found
Deze bekende statuscode geeft aan dat de server de gevraagde bron niet kan vinden. Links die naar een 404-pagina leiden, worden vaak gebroken of dode links genoemd. Een 404-statuscode geeft alleen aan dat de resource ontbreekt: niet of de afwezigheid tijdelijk of permanent is. Als een resource permanent is verwijderd, gebruikt je de status 410 Gone in plaats daarvan.
405 Method Not Allowed
Deze responsstatuscode geeft aan dat de server de aanvraagmethode kent, maar dat de doelbron deze methode niet ondersteunt. De server moet een Allow headerveld genereren in een 405-statuscode antwoord. Het veld moet een lijst met methoden bevatten die de doelresource momenteel ondersteunt.
406 Not Acceptable
Deze clientfout responscode geeft aan dat de server geen reactie kan produceren die overeenkomt met de lijst met acceptabele waarden zoals gedefinieerd in de proactieve headers van de aanvraag en dat de server niet bereid is een standaardweergave te leveren. In de praktijk komt deze fout zeer zelden voor. In plaats van te reageren met behulp van deze foutcode, die cryptisch zou zijn voor de eindgebruiker en moeilijk te repareren, negeren servers de relevante header en geven ze een echte pagina aan de gebruiker. Er wordt aangenomen dat zelfs als de gebruiker niet helemaal tevreden zal zijn, deze de voorkeur zal geven aan een foutcode. Als een server een dergelijke foutstatus retourneert, moet de hoofdtekst van het bericht de lijst van de beschikbare representaties van de bronnen bevatten, zodat de gebruiker hiertussen kan kiezen.
407 Proxy Authentication Required
Deze clientfoutstatus responscode geeft aan dat het verzoek niet is toegepast omdat er geen geldige verificatiereferenties zijn voor een proxyserver die zich tussen de browser en de server bevindt die toegang heeft tot de gevraagde bron. Deze status wordt verzonden met een Proxy-Authenticateheader die informatie bevat over het correct autoriseren.
408 Request Timeout
Deze responsstatuscode betekent dat de server de ongebruikte verbinding wil afsluiten. Het wordt door sommige servers op een inactieve verbinding verzonden, zelfs zonder voorafgaand verzoek van de client. Een server moet ‘Close Connection’ in het antwoord verzenden, omdat 408 impliceert dat de server heeft besloten de verbinding te sluiten in plaats van verder te wachten. Dit antwoord komt steeds vaker voor omdat sommige browsers, zoals Chrome en Firefox verbindingsmechanismen gebruiken om het surfen te versnellen.
409 Conflict
Deze statuscode geeft aan dat er een conflict is met de huidige status van de doelbron. Conflicten treden het meest waarschijnlijk op als reactie op een PUT verzoek. Je kan bijvoorbeeld een 409-antwoord krijgen bij het uploaden van een bestand dat ouder is dan het bestaande op de server, wat resulteert in een versiebeheer conflict.
410 Gone
Deze foutreactiecode geeft aan dat toegang tot de doelbron niet langer beschikbaar is op de oorspronkelijke server en dat deze toestand waarschijnlijk permanent is. Als je niet weet of deze toestand tijdelijk of permanent is, moet je in plaats daarvan een 404 statuscode gebruiken.
411 Length Required
Deze foutreactiecode geeft aan dat de server weigert het verzoek te accepteren zonder een gedefinieerde Content-Length header.
412 Precondition Failed
Deze foutreactiecode geeft aan dat de toegang tot de doelbron is geweigerd. Dit gebeurt met voorwaardelijke verzoeken op andere methoden dan GET of wanneer niet wordt voldaan aan de HEAD voorwaarde die is gedefinieerd. In dat geval kan het verzoek, meestal een upload of een wijziging van een bron, niet worden gedaan en wordt deze foutreactie teruggestuurd.
413 Payload Too Large
Deze antwoordstatus code geeft aan dat de aanvraagentiteit groter is dan de door de server gedefinieerde limieten; de server kan de verbinding sluiten of een Retry-After koptekstveld retourneren.
414 URI Too Long
Deze code geeft aan dat de URI langer is dan de server wil/kan interpreteren. Er zijn een paar zeldzame omstandigheden waarin dit kan gebeuren:
• wanneer een klant een POST verzoek op onjuiste wijze heeft omgezet in een GET verzoek met lange query-informatie,
• wanneer de client is afgedaald in een omleidingslus (bijvoorbeeld een omgeleid URI-voorvoegsel dat verwijst naar een achtervoegsel van zichzelf),
• of wanneer de server wordt aangevallen door een client die probeert potentiële beveiligingslekken te misbruiken.
415 Unsupported Media Type
Deze foutreactiecode geeft aan dat de server weigert het verzoek te accepteren omdat de payload-indeling een niet-ondersteunde indeling heeft. Het formaat probleem kan te wijten zijn aan het aangegeven verzoek Content-Type of Content-Encoding, of als gevolg van het rechtstreeks inspecteren van de gegevens.
416 Range Not Satisfiable
Deze foutcode geeft aan dat een server de gevraagde bereiken niet kan bedienen. De meest waarschijnlijke reden is dat het document dergelijke bereiken niet bevat, of dat de Rangewaarde van de kop, hoewel syntactisch correct, niet logisch is. Het bericht bevat een Content-Range die een niet-voldaan bereik aangeeft, dat wil zeggen een ‘*’ gevolgd door een ‘/’. Geconfronteerd met deze fout, breken browsers de bewerking meestal af (een download wordt bijvoorbeeld als niet-hervatbaar beschouwd) of vragen ze opnieuw om het hele document.
417 Expectation Failed
Deze foutreactiecode geeft aan dat Expect niet kon worden voldaan aan de verwachting in de header van het verzoek.
Zonder twijfel de meest opmerkelijke statuscode.
418 I’m a teapot
Deze foutreactiecode geeft aan dat de server weigert koffie te zetten omdat het permanent een theepot is. Een gecombineerde koffie/theepot die tijdelijk geen koffie meer heeft, zou in plaats daarvan 503 moeten retourneren. Deze fout is een verwijzing naar het Hyper Text Coffee Pot Control Protocol gedefinieerd in de grappen van April Fools in 2014. Sommige websites gebruiken dit antwoord voor verzoeken die ze niet willen behandelen, zoals geautomatiseerde zoekopdrachten.
422 Unprocessable Entity
Deze reactiestatuscode geeft aan dat de server het inhoudstype van de verzoekentiteit begrijpt en dat de syntaxis van de verzoekentiteit correct is, maar dat de server de daarin opgenomen instructies niet kon verwerken.
425 Too Early
Deze responsstatuscode geeft aan dat de server niet bereid is het risico te nemen om een verzoek te verwerken dat mogelijk opnieuw wordt afgespeeld, wat het potentieel voor een herhalingsaanval creëert.
426 Upgrade Required
Deze foutreactiecode geeft aan dat de server weigert het verzoek uit te voeren met het huidige protocol, maar mogelijk bereid is dit te doen nadat de client een upgrade naar een nieuw protocol heeft uitgevoerd.
428 Precondition Required
Deze code geeft aan dat de server vereist dat het verzoek voorwaardelijk is. Meestal betekent dit dat een vereiste preconditie-header ontbreekt. Als een precondition-header niet overeenkomt met de server-side-status, moet het antwoord ‘412 Precondition Failed’ zijn.
429 Too Many Requests
Deze reactiestatuscode geeft aan dat de gebruiker te veel verzoeken heeft verzonden in een bepaalde tijd (“snelheidsbeperking”). Aan het ‘Retry-After’ antwoord kan een koptekst worden toegevoegd die aangeeft hoe lang moet worden gewacht voordat een nieuw verzoek kan worden ingediend.
431 Request Header Fields Too Large
Deze statuscode geeft aan dat de server weigert het verzoek te verwerken omdat de HTTP-headers van het verzoek te lang zijn. De aanvraag kan opnieuw worden ingediend nadat de grootte van de aanvraagheaders is verkleind. 431 kan worden gebruikt wanneer de totale grootte van aanvraagheaders te groot is, of wanneer een enkel headerveld te groot is. Om degenen die deze fout tegen komen te helpen, geeft je aan welke van de twee het probleem is in de antwoordtekst. Indien mogelijk vermeld je ook welke kopteksten te groot zijn. Hierdoor kunnen gebruikers proberen het probleem op te lossen, bijvoorbeeld door hun cookies te wissen.
451 Unavailable For Legal Reasons
Deze foutreactiecode geeft aan dat de gebruiker een bron heeft aangevraagd die om juridische redenen niet beschikbaar is, zoals een webpagina waarvoor een juridische procedure is ingesteld.
500 Internal Server Error
Deze foutreactiecode geeft aan dat de server een onverwachte omstandigheid heeft aangetroffen waardoor deze niet aan het verzoek kon voldoen. Deze foutreactie is een algemene “catch-all”-reactie. Meestal geeft dit aan dat de server geen betere 5xx-foutcode kan vinden om te reageren. Soms registreren serverbeheerders foutreacties zoals de 500-statuscode met meer details over het verzoek om te voorkomen dat de fout in de toekomst opnieuw optreedt.
501 Not Implemented
Deze foutreactiecode betekent dat de server de functionaliteit die nodig is om aan het verzoek te voldoen, niet ondersteunt. Deze status kan ook een Retry-After header verzenden, die de aanvrager vertelt wanneer hij terug moet komen om te zien of de functionaliteit tegen die tijd wordt ondersteund. 501 is het juiste antwoord wanneer de server de aanvraagmethode niet herkent en niet in staat is om deze voor enige bron te ondersteunen. De enige methoden die servers moeten ondersteunen (en die daarom niet mogen terugkeren 501) zijn GET en HEAD. Als de server de methode wel herkent, maar deze opzettelijk niet ondersteunt, is het juiste antwoord 405 Method Not Allowed.
502 Bad Gateway
Deze foutreactiecode server geeft aan dat de server, terwijl deze als gateway of proxy fungeert, een ongeldig antwoord heeft ontvangen van de upstream-server. Dit kan verwijzen naar verschillende dingen in netwerken en een 502-fout is meestal niet iets dat je zelf kan oplossen, maar vereist een oplossing door de webserver of de proxy’s waarmee je toegang probeert te krijgen.
503 Service Unavailable
Deze foutreactiecode geeft aan dat de server niet gereed is om het verzoek te verwerken. Veelvoorkomende oorzaken zijn een server die niet beschikbaar is door onderhoud of die overbelast is. Dit antwoord moet worden gebruikt voor tijdelijke omstandigheden en de Retry-After header moet, indien mogelijk, de geschatte tijd voor het herstel van de service bevatten. Bij deze reactie moet een gebruiksvriendelijke pagina met uitleg van het probleem te worden meegestuurd. Caching-gerelateerde headers die samen met dit antwoord worden verzonden, vereisen specifieke instellingen, aangezien een 503-status vaak een tijdelijke voorwaarde is en antwoorden normaal gesproken niet in de cache moeten worden opgeslagen.
504 Gateway Time-out
Deze foutreactiecode geeft aan dat de server, hoewel deze als gateway of proxy fungeert, niet op tijd een reactie heeft gekregen van de upstream-server die nodig was om het verzoek te voltooien.
Dit kan verwijzen naar verschillende dingen in netwerken en een 502-fout is meestal niet iets dat je zelf kan oplossen, maar vereist een oplossing door de webserver of de proxy’s waarmee je toegang probeert te krijgen.
505 HTTP Version Not Supported
Deze responsstatuscode geeft aan dat de HTTP-versie die in het verzoek wordt gebruikt, niet wordt ondersteund door de server.
506 Variant Also Negotiates
Deze responsstatuscode heeft betrekking over onderhandeling van transparante content. Dit protocol stelt een client in staat om de beste variant van een bepaalde bron op te halen, waarbij de server meerdere varianten ondersteunt. De code geeft een interne serverconfiguratiefout aan waarbij de gekozen variant zelf is geconfigureerd om deel te nemen aan contentonderhandeling en dus geen goed onderhandelingseindpunt is.
507 Insufficient Storage
Deze responsstatuscode geeft aan dat een methode niet kon worden uitgevoerd omdat de server de representatie die nodig is om het verzoek met succes te voltooien, niet kan opslaan.
508 Loop Detected
Deze responsstatuscode geeft aan dat de server een bewerking heeft beëindigd omdat deze een oneindige lus is tegengekomen tijdens het verwerken van een verzoek met “Diepte: oneindig”. Deze status geeft aan dat de hele bewerking is mislukt.
510 Not Extended
De responsstatuscode geeft aan dat er is niet voldaan aan het beleid voor toegang tot de bron in de aanvraag. De server moet alle informatie terugsturen die de client nodig heeft om een uitgebreid verzoek uit te vaardigen. In die specificatie kan een opdrachtgever een verzoek sturen dat een extensieverklaring bevat, waarin de te gebruiken extensie wordt beschreven. Als de server een dergelijk verzoek ontvangt, maar eventuele beschreven extensies worden niet ondersteund voor het verzoek, dan reageert de server met de 510-statuscode.
511 Network Authentication Required
Deze statuscode geeft aan dat de client zich moet verifiëren om toegang tot het netwerk te krijgen. Deze status wordt niet gegenereerd door de servers, maar door het onderscheppen van proxy’s die de toegang tot het netwerk regelen. Netwerkoperators vereisen soms authenticatie, acceptatie van voorwaarden of andere gebruikersinteractie voordat ze toegang verlenen (bijvoorbeeld in een internetcafé of op een luchthaven). Ze identificeren vaak klanten met behulp van hun Media Access Control (MAC)-adressen.
Conclusie
Een handig overzicht van alle codes zodat je (globaal) weet wat er aan de hand is. Tenzij je zelf webdeveloper bent zul je in het merendeel van de gevallen iemand in moeten schakelen die het technisch probleem voor je gaat oplossen. Pas op met zelf experimenteren want veel foutmeldingen kunnen schadelijk zijn voor je positie in zoekmachines. Heb je vragen of hulp nodig? Neem contact op!