Werkt de website? Controleer HTTP met curl op de Mac

Met curl vraag je een webpagina op vanuit Terminal en lees je de HTTP-statuscode: het antwoord van de webserver op dat verzoek. Zo onderzoek je een websiteprobleem buiten je browser, zonder netwerkinstellingen te veranderen.

Bekijk de opdrachten in actie 13 seconden

Druk op afspelen: de opdrachten verschijnen letter voor letter. Je kunt pauzeren en het beeld vergroten.

Geluidloze terminalopname op de Mac. De homepage geeft 200; het niet-bestaande oefenpad geeft 404. Het procentteken aan het begin van de regel is de prompt en hoort niet bij de opdracht.

Stap voor stap

  1. Controleer of curl beschikbaar is

    Open Terminal en voer de opdracht hieronder uit met Return. Je hebt geen beheerdersrechten nodig. curl is een programma voor het versturen van netwerkverzoeken; het wordt met macOS meegeleverd.

                curl --version
              

    Dit zie je: Je ziet de versie van curl en ondersteunde protocollen. Het versienummer kan per Mac verschillen.

  2. Vraag een bekende pagina op

    Kopieer de hele opdracht, inclusief de aanhalingstekens en de backslash vóór n. example.com is een neutraal voorbeelddomein. Deze opdracht vraagt de pagina op, verbergt de ontvangen paginainhoud en toont alleen de HTTP-code. Het verzoek stopt uiterlijk na tien seconden.

                curl -sS -o /dev/null -w '%{http_code}\n' --max-time 10 https://example.com
              

    Dit zie je: Bij code 200 heeft de server het verzoek succesvol beantwoord. Dat bewijst nog niet dat alle knoppen, scripts of inlogfuncties van een website werken.

  3. Vergelijk met een niet-bestaande pagina

    Vraag nu hetzelfde domein op met het oefenpad uit de opdracht hieronder. Alleen het laatste deel van het webadres verandert.

                curl -sS -o /dev/null -w '%{http_code}\n' --max-time 10 https://example.com/dit-pad-bestaat-niet-pctip
              
    curl toont 404 voor het bewust niet-bestaande pad op example.com.
    Dezelfde terminalsessie: dit verzoek krijgt een HTTP-antwoord met code 404.

    Dit zie je: Bij code 404 is de webserver bereikbaar, maar vindt deze de gevraagde pagina niet. Een 404 is dus iets anders dan een weggevallen internetverbinding.

  4. Onderzoek de website die bij jou niet werkt

    Vervang in de opdracht van stap 2 alleen de laatste URL door het volledige HTTPS-adres van een gewone openbare pagina. Zet het adres tussen enkele aanhalingstekens als het speciale tekens bevat. Gebruik geen geheime toegangslinks. Noteer de code en een eventuele foutregel.

    Dit zie je: Vergelijk de code of foutmelding met wat je in de browser ziet. De opdracht vraagt de pagina op; hij repareert de website niet.

Wat betekenen de onderdelen van de opdracht?

Onderdeel Functie
-sS Verbergt de voortgangsmeter, maar houdt foutmeldingen zichtbaar.
-o /dev/null Stuurt de ontvangen paginainhoud naar de lege uitvoer op de Mac; er wordt geen bestand bewaard.
-w '%{http_code}\n' Schrijft na het verzoek de HTTP-code en een nieuwe regel. Neem dit stukje letterlijk over.
--max-time 10 Begrens de totale duur van één poging tot tien seconden.
https://example.com De pagina die wordt opgevraagd.

De opdrachten gebruiken een normaal GET-verzoek. curl tekent geen webpagina en voert geen JavaScript uit. Je ziet hiermee het antwoord van de server, zonder de verwerking door Chrome of Safari.

Welke vervolgstap past bij de code?

Uitkomst Betekenis en volgende stap
200 Het verzoek is gelukt. Werkt de browser nog niet, onderzoek dan bijvoorbeeld de browser, inlogsessie of scripts van de website.
301 of 302 De server verwijst naar een ander adres. Deze opdracht volgt die verwijzing niet automatisch; dit is niet op zichzelf een storing.
403 De server weigert dit verzoek. Een site kan curl anders behandelen dan een gewone browser.
404 De gevraagde pagina is niet gevonden. Controleer vooral het volledige webadres.
500, 502 of 503 Een server of tussenschakel meldt een probleem. Deze code is geen reden om je browser opnieuw te installeren.
000 met een curl-fout Er is geen HTTP-code beschikbaar. Lees de foutregel: de naamopzoeking, verbinding, tijdslimiet of certificaatcontrole kan zijn mislukt.

000 is geen officiële HTTP-statuscode. Ook de afsluitcode van het programma curl is iets anders dan de HTTP-code: zonder een extra foutoptie kan curl normaal afsluiten nadat het bijvoorbeeld een 404 heeft ontvangen. Kijk bij deze handmatige proef naar de getoonde uitvoer.

Meldt curl dat de hostnaam niet gevonden kan worden? Ga verder met DNS onderzoeken met nslookup. Bij een certificaatfout is het omzeilen van de controle met -k geen oplossing voor de oorzaak.

Een HTTP-code is een momentopname. De voorbeeldwebsite of je netwerk kan op een ander moment een ander antwoord geven.

Bekijk alle tips