In de wereld van webontwikkeling spelen HTTP-foutcodes een cruciale rol bij het beïnvloeden van de gebruikerservaring en reputatie van een website. In dit artikel bekijken we een complete lijst met serverfoutcodes, analyseren we hun betekenissen en leren we hoe we serverresponscodes effectief kunnen interpreteren om problemen op te lossen en de prestaties van webapps te optimaliseren.
Wat is een HTTP-responscode?
HTTP-responscode is de taal van webservers die browserverzoeken vertaalt naar begrijpelijke instructies. Het is als een dichter die virtuele vragen beantwoordt en ze betekenis en richting geeft. Responscodes zijn niet altijd HTTP-foutcodes. Bijvoorbeeld, "200 OK" betekent dat alles OK is, maar HTTP-fout "404 Not Found" betekent dat de pagina verloren is gegaan in de virtuele ruimte. Elke code is een unieke uitdrukking van de serverstatus, waarvan de decodering ons in staat stelt te begrijpen wat er aan de andere kant van de virtuele wereld gebeurt.
1xx-codes (informatie)
1xx-statuscodes in het HTTP-protocol zijn een soort eerste schakel in de dialoog tussen de server en de client. In plaats van een volledig antwoord op een verzoek te geven, geven ze informatie over de huidige status, waardoor gegevensuitwisseling efficiënter wordt. Laten we ze eens nader bekijken:
100 Continue . HTTP-antwoordcode waarmee de server de gebruiker groen licht geeft om veilig door te gaan met het verzenden van een groot verzoek.
101 Protocolwisseling . De server laat de client weten dat de spelregels veranderen, bijvoorbeeld door over te schakelen van HTTP naar het veiligere HTTPS. In dit geval wordt de "Upgrade"-header gebruikt voor de protocolwijziging.
102 Verwerking . Deze code geeft aan dat de server het verzoek heeft geaccepteerd, maar nog bezig is met een complexe bewerking.
103 Vroege aanwijzingen . Hier stuurt de server verschillende indicatieve headers naar de client vóór het hoofdantwoord, met een waarschuwing over iets dat in de nabije toekomst relevant kan zijn.
2xx-code (succesvol)
HTTP-foutcodes in de groep 2xx geven een succesvol verzoek van de server aan. Ze fungeren in feite als een "groen licht" in het bereik van webcommunicatie, en bevestigen dat alles volgens plan verloopt en succesvol is voltooid.
200 OK . Deze status wordt gebruikt wanneer de server een verzoek via de GET-methode probleemloos verwerkt en de gevraagde gegevens in het antwoord retourneert. De header "Content-Type" geeft het contenttype in het antwoord weer. Deze informeert de client alleen dat het verzoek succesvol was.
201 Aangemaakt . Hier kondigt de server de aanmaak van een nieuwe bron aan.
202 Accepted . De server laat de gebruiker weten dat het verzoek is geaccepteerd, maar dat het even kan duren voordat er een reactie komt.
203 Niet-gezaghebbende informatie . Deze code geeft de klant gegevens die mogelijk niet officieel zijn, maar wel gebruikt kunnen worden ter vergelijking.
204 Geen inhoud . De server heeft het verzoek verwerkt, maar retourneert geen aanvullende inhoud.
205 Inhoud resetten . Hier wordt de client geïnstrueerd om de huidige weergave of gegevens te resetten na verzending.
206 Gedeeltelijke inhoud . Dit geval geeft aan dat het antwoord slechts een deel van de gevraagde inhoud bevat. De header "Content-Range" geeft het bereik van de gedeeltelijke inhoud aan.
207 Meerdere statussen. De server heeft een verzoek met meerdere bewerkingen van de client succesvol voltooid en het antwoord bevat informatie over de status van elk van de bewerkingen.
226 IM gebruikt . Deze code geeft aan dat de server de Incremental Metadata (IM)-methode heeft gebruikt en alleen de gewijzigde resourceonderdelen naar de client heeft doorgestuurd.
3xx-codes (omleidingen)
3xx-codes in het HTTP-protocol zijn als pointers die de gebruiker naar een nieuwe resourcelocatie leiden. Ze informeren de client dat vervolgstappen moeten worden genomen om de gevraagde content te verkrijgen of om te worden omgeleid naar een andere resource. Laten we dieper ingaan op de details van elk van hen:
300 Meerdere Keuzemogelijkheden . De klant ontvangt een signaal dat er meerdere mogelijke locaties voor de bron zijn en krijgt een keuze voorgelegd. In de huidige omstandigheden kan de koptekst "Locatie" alternatieve opties voor de bron aangeven.
301 Permanent verplaatst. De server meldt aan de gebruiker dat de bron permanent naar een andere locatie is verplaatst.
302 Found . Deze HTTP-code is vergelijkbaar met een tijdelijke omleiding. De server laat de gebruiker weten dat de bron tijdelijk beschikbaar is op een andere URL. De "Location"-header verwijst naar de nieuwe URL voor de tijdelijke omleiding.
303 Zie andere . De client krijgt te horen dat de bron beschikbaar is op een andere URL en moet een GET-verzoek naar dit nieuwe adres sturen.
304 Niet gewijzigd . Deze status geeft de client aan dat de bron sinds het laatste verzoek ongewijzigd is gebleven en niet opnieuw hoeft te worden gedownload. Bij het doen van een verzoek wordt de header "If-Modified-Since" gebruikt om te controleren of de bron is gewijzigd.
305 Gebruik proxy. Als reactie hierop meldt de server dat de opgegeven proxy moet worden gebruikt om toegang te krijgen tot de gevraagde bron.
306 (gereserveerd) — De code is gereserveerd, maar wordt in feite niet gebruikt.
307 Tijdelijke omleiding . Deze code is vergelijkbaar met 302 Gevonden, maar vereist dat de client in de verzoekmethode blijft die in het oorspronkelijke verzoek werd gebruikt.
308 Permanente omleiding . Geeft aan dat de bron permanent is verplaatst naar een nieuwe URI en dat de client de nieuwe URI moet gebruiken voor alle toekomstige verzoeken.
4xx HTTP-fout (clientfouten)
HTTP 4xx-foutcodes geven clientfouten aan. Dit betekent dat het probleem aan de gebruikerskant ligt, zoals de webbrowser of app.
400 Bad Request . De server kan het verzoek niet verwerken vanwege syntaxfouten, ongeldige gegevens of andere fouten aan de clientzijde.
401 Niet geautoriseerd. De server kan het verzoek niet verwerken vanwege syntaxfouten, ongeldige gegevens of andere fouten aan de clientzijde.
402 Betaling vereist . De code is momenteel niet actief en is gereserveerd voor toekomstig gebruik. Dit kan betekenen dat u in de toekomst moet betalen voordat u toegang krijgt tot de bron.
HTTP-fout 403 Verboden. De client heeft onvoldoende rechten om toegang te krijgen tot de gevraagde bron.
404 Niet gevonden. De gevraagde bron bestaat niet op de server. Dit is een van de meest voorkomende gebruikersfouten.
405 Methode niet toegestaan . De server ondersteunt de opgegeven aanvraagmethode niet voor deze resource. De header "Allow" geeft aan welke methoden voor de resource zijn toegestaan. Met deze code,
406 Niet acceptabel. De server kan geen gegevens aanleveren in een formaat dat door de client kan worden geaccepteerd.
407 Proxy-authenticatie vereist . Authenticatie op de proxyserver is vereist voor toegang tot de gevraagde bron.
408 Time-out bij aanvraag . De server wachtte op een aanvraag van de client, maar de time-out is verlopen. De header "Retry-After" kan aangeven na welke tijd de aanvraag opnieuw kan worden geprobeerd.
409 Conflict. Het verzoek kan niet worden voltooid vanwege een conflict met de huidige status van de bron.
410 Verdwenen . De gevraagde bron bestond eerder, maar is nu verwijderd en herstel ervan wordt niet verwacht.
411 Lengte vereist . De server vereist dat de lengte van de inhoud in het verzoek wordt gespecificeerd; het ontbreken van deze informatie wordt als een fout beschouwd.
412 Voorwaarde niet voldaan . Er is niet voldaan aan een voorwaarde in het verzoek, waardoor het niet kan worden uitgevoerd.
413 Payload Too Large . De omvang van de aangevraagde gegevens overschrijdt de serverlimieten.
414 URI te lang . De URI-lengte in het verzoek overschrijdt de acceptabele limieten.
415 Niet-ondersteund mediatype . De server kan het in het verzoek opgegeven gegevenstype niet verwerken.
416 Bereik niet beschikbaar . HTTP-fout waarbij het gevraagde bereik niet overeenkomt met de huidige servergegevens.
417 Verwachting mislukt . De verwachte voorwaarde in de koptekst "Verwachten" is niet voldaan.
418 Ik ben een theepot . Deze code is als grap bedoeld en impliceert geen echte actie van de gebruiker of server, en is geen volwaardige foutmelding. Het geeft aan dat de server een theepot is en geen koffie kan zetten.
421 Onjuist verzoek . De server verwerkt het verzoek niet vanwege een fout in het verzoek of de serverconfiguratie.
422 Onverwerkbare entiteit . De server begrijpt het verzoek, maar verwerkt het niet vanwege gegevensfouten.
423 Vergrendeld. De bron is geblokkeerd en kan niet worden verwerkt.
424 Afhankelijkheid mislukt . Het verzoek is afhankelijk van een ander, nog niet uitgevoerd verzoek.
425 Te vroeg. De server is nog niet klaar om het verzoek te verwerken omdat het te vroeg binnenkomt.
426 Upgrade vereist . De server vereist een geavanceerder protocol om het verzoek te verwerken.
428 Voorwaarde vereist . De server vereist dat bepaalde voorwaarden in het verzoek worden gespecificeerd.
429 Te veel verzoeken . De client heeft in korte tijd te veel verzoeken verzonden, waardoor de limieten van de server zijn overschreden.
431 Aanvraagheadervelden te groot . De aanvraagheaders overschrijden de maximaal toegestane grootte.
449 Opnieuw proberen met. Geeft aan dat het verzoek niet door de huidige server kan worden uitgevoerd, maar wel succesvol kan worden verwerkt door een andere server. De client moet het verzoek daarom opnieuw proberen met een nieuwe URI.
451 Niet beschikbaar om juridische redenen . De bron is om juridische redenen niet beschikbaar.
499 Client Closed Request . De server heeft het verzoek ontvangen, maar de verbinding is door de client verbroken voordat de verwerking was voltooid.
HTTP 5xx-fout (serverfouten)
HTTP 5xx-foutcodes geven serverproblemen aan. Deze codes geven problemen aan die zich aan de serverkant hebben voorgedaan, waardoor de server het verzoek van de gebruiker niet op de juiste manier kan verwerken. Laten we ze eens nader bekijken:
HTTP-fout 500 Interne serverfout . De server ondervindt onverwachte omstandigheden waardoor het verzoek niet kan worden voltooid. De header "Server" kan de server aangeven waarop de fout is opgetreden.
501 Niet geïmplementeerd . De server ondersteunt niet de functionaliteit die nodig is om het verzoek van de client te verwerken. De header "Via" kan de proxyserver aangeven via welke de fout is opgetreden.
502 Bad Gateway . Deze code betekent dat de server die als proxy fungeert een onjuist antwoord van een andere server heeft ontvangen.
HTTP- fout 503 Service niet beschikbaar . De server kan tijdelijk geen verzoeken verwerken.
504 Gateway Timeout . De server die als proxy fungeert, heeft geen tijdige reactie van een andere server ontvangen.
505 HTTP-versie niet ondersteund . De server ondersteunt de in het verzoek opgegeven HTTP-protocolversie niet. Als alternatief kan de header "Upgrade" aangeven welke protocollen wel worden ondersteund.
506 Variant Also Negotiates . Deze status wordt niet gebruikt in HTTP/1.1; als de server echter een interne configuratie detecteert die leidt tot onduidelijkheid bij de inhoudsonderhandeling, kan deze respons wel worden gebruikt.
507 Onvoldoende opslagruimte . De server kan het verzoek niet verwerken vanwege onvoldoende opslagruimte op de server.
Foutcode 508: Lus gedetecteerd . De server heeft een lus gedetecteerd tijdens de verwerking van het verzoek en weigert het verzoek te voltooien om een oneindige lus te voorkomen.
509 Bandbreedtelimiet overschreden . Deze fout treedt op wanneer de bandbreedte van de server wordt overschreden als gevolg van een hoog volume aan verzoeken of verkeer.
510 Niet verlengd . De klant moet extra verlengingen overdragen om het verzoek voort te zetten.
511 Netwerkverificatie vereist . De client moet zich authenticeren om toegang tot het netwerk te krijgen.
Hoe de paginastatuscode te controleren
In deze sectie zullen we drie hoofdmanieren bespreken om de paginastatuscode te controleren: via de opdrachtregel, met behulp van een webbrowser en met behulp van onafhankelijke onlineservices. Elk van deze methoden heeft zijn eigen voordelen en kan in verschillende situaties nuttig zijn.
Serverrespons controleren via opdrachtregel
De opdrachtregel biedt een handige manier om de paginastatuscode te controleren zonder dat u een webbrowser hoeft te gebruiken. Voor deze methode moet u de opdrachtregel openen en de opdracht gebruiken:
curl -I http://page-address
Met deze opdracht wordt een HEAD-aanvraag (headers only request) naar de opgegeven URL verzonden en wordt informatie weergegeven, waaronder de HTTP-statuscode:
Het bovenstaande voorbeeld toont een succesvolle responscode. In het geval van een respons die een foutcode bevat, zoals 404 Not Found HTTP error, zal het resultaat er ongeveer zo uitzien:
Het serverantwoord controleren via de browserconsole
De ontwikkelaarsconsole van de webbrowser biedt hulpmiddelen voor het uitvoeren van verschillende bewerkingen, waaronder het controleren van de paginastatuscode. Om de HTTP-code in de serverrespons te zien, moet u de ontwikkelaarsconsole openen (Ctrl+Shift+K) of (Ctrl+shift+J), afhankelijk van de gebruikte browser. Selecteer vervolgens de sectie 'netwerk' en laad de gewenste pagina:
Het serverantwoord controleren met behulp van onafhankelijke hulpmiddelen
Er zijn talloze onafhankelijke online diensten die tools aanbieden om de statuscode van een webpagina te controleren. Deze diensten geven je meestal snel een overzicht van de beschikbaarheid en prestaties van je website. Ze werken allemaal volgens hetzelfde principe. Als voorbeeld nemen we de meest populaire dienst: httpstatus.io.
Allereerst moet u de service zelf openen en vervolgens het adres van de pagina invoeren waarvan u het antwoord wilt weten, en om verificatie vragen:
Het resultaat wordt onderaan de pagina weergegeven:
Conclusie
Concluderend moet worden benadrukt dat het begrijpen en kunnen lezen van HTTP-foutcodes een belangrijke vaardigheid is voor iedereen die betrokken is bij webontwikkeling en serveronderhoud. Terwijl we elke fout achterhalen en de tools verkennen om ze te detecteren, zien we redenen waarom het zo belangrijk is om deze aspecten van webservices effectief te beheren.