curl-felkoder: Komplett referens
När ett curl-kommando misslyckas returnerar det en numerisk exitkod (även kallad curl-felkod) som identifierar typen av fel. Du kan kontrollera curl-exitkoden genom att köra echo $? direkt efter curl-kommandot (eller $LASTEXITCODE i PowerShell). Exitkod 0 betyder lyckad operation; alla andra nummer indikerar ett specifikt problem — från DNS-upplösningsfel och anslutningstimeouts till SSL-certifikatproblem. Denna sida är en komplett referens över de vanligaste curl-felkoderna med förklaringar, orsaker och åtgärder. Om du arbetar med curl-kommandon i din kod, klistra in dem i curl2code för att konvertera till ditt valda programmeringsspråk.
Snabbreferenstabell
Lyckad. Operationen slutfördes utan några fel.
Protokoll som inte stöds. URL:en använder ett protokoll som curl inte byggdes med stöd för.
Felformaterad URL. URL-syntaxen är ogiltig eller kunde inte tolkas.
Kunde inte slå upp proxy. Det angivna proxyvärdennamnet kunde inte slås upp.
DNS-uppslagning misslyckades — värdnamnet kunde inte slås upp till en IP-adress.
TCP-anslutning misslyckades — servern är nere, porten är blockerad, eller brandväggen nekar anslutningar.
Delvis fil. Överföringen avbröts och bara en del av filen togs emot.
Servern returnerade ett HTTP-fel (4xx/5xx) och flaggan --fail användes.
Skrivfel. curl kunde inte skriva mottagen data till disk (åtkomst nekad eller disk full).
Operationen överskred den maximalt tillåtna tiden (DNS, anslutning eller överföring).
SSL/TLS-handskakning misslyckades — protokollversion eller chiffer-svitinkompatibilitet.
Kunde inte läsa fil. En lokal fil som refererades i förfrågan kunde inte öppnas eller läsas.
Tomt svar från servern. Servern stängde anslutningen utan att skicka någon data.
Anslutningen återställdes — servern avbröt anslutningen under dataöverföringen.
SSL-certifikatverifiering misslyckades — utgånget, självsignerat eller föråldrat CA-paket.
SSL CA-certifikatproblem. Kunde inte läsa eller tolka den angivna CA-certifikatfilen.
HTTP/2-strömfel. Ett HTTP/2-protokollnivåströmfel uppstod under överföringen.
Fel 6: Kunde inte slå upp värdnamnet
- Vad det betyder
- Din terminal visar
curl: (6) Could not resolve host. curl kunde inte slå upp värdnamnet till en IP-adress — DNS-uppslagningen misslyckades innan någon anslutning försöktes. - Orsaker
- De vanligaste orsakerna är: ett stavfel i värdnamnet (t.ex.
curl https://apiexample.comistället förapi.example.com), DNS-serverproblem (din konfigurerade DNS är nere eller oåtkomlig), ingen nätverksanslutning (Wi-Fi frånkopplat, VPN inte ansluten), eller domänen existerar verkligen inte. - Så åtgärdar du
- Verifiera först att URL:en är korrekt. Testa sedan DNS-upplösning direkt:
nslookup api.example.comellerdig api.example.com. Om DNS misslyckas, prova en annan DNS-server:curl --dns-servers 8.8.8.8 https://api.example.com. Kontrollera din/etc/resolv.confeller nätverksinställningar. Om du sitter bakom ett företags-VPN, se till att den interna DNS:en kan slå upp värden.
$ curl https://api.exmple.com/usersFel 7: Anslutning misslyckades
- Vad det betyder
- Din terminal visar
curl: (7) Failed to connect to host port: Connection refused. curl slog upp värdnamnet men kunde inte upprätta en TCP-anslutning till servern — anslutningen nekades aktivt eller tidsgräns överskreds på TCP-nivå. - Orsaker
- Vanliga orsaker inkluderar: servern är nere eller körs inte, en brandvägg blockerar porten (kontrollera både lokala och serverbaserade brandväggar), porten är fel (t.ex. tjänsten kör på 8080 men du ansluter till 443), eller serverns listen-backlog är full under hög belastning.
- Så åtgärdar du
- Verifiera att servern körs:
ping api.example.comochtelnet api.example.com 443. Kontrollera om rätt port är öppen:nmap -p 443 api.example.com. Inaktivera lokal brandvägg tillfälligt för att testa. Om du använder Docker, se till att containerns port är publicerad. Prova med verbose-läge:curl -v https://api.example.comför att se exakt var anslutningen misslyckas.
$ curl https://localhost:8080/apiFel 22: HTTP returnerade fel
- Vad det betyder
- Din terminal visar
curl: (22) The requested URL returned error. Servern returnerade en HTTP-felstatuskod (4xx eller 5xx) och curl anropades med-feller--fail, vilket instruerar curl att behandla HTTP-fel som misslyckanden. - Orsaker
- Felet utlöses av HTTP-statuskoder som 400 (Bad Request), 401 (Unauthorized), 403 (Forbidden), 404 (Not Found) eller 500 (Internal Server Error) — men bara när
--failanvänds. Utan--failavslutar curl med kod 0 även vid HTTP-fel. Vanliga orsaker: fel URL, saknad autentisering, otillräckliga behörigheter eller serversidans buggar. - Så åtgärdar du
- Kör curl utan
--failför att se hela svarskroppen — den innehåller ofta det faktiska felmeddelandet. Kontrollera HTTP-statuskoden:curl -w "%{http_code}" -o /dev/null -s URL. För 401/403: verifiera din auth-token eller API-nyckel. För 404: dubbelkolla URL-sökvägen. För 500: problemet är på serversidan.
$ curl --fail https://api.example.com/nonexistentFel 28: Tidsgräns överskreds
- Vad det betyder
- Din terminal visar
curl: (28) Operation timed outellercurl: (28) Connection timed out. Operationen tog längre tid än den tillåtna tiden. Detta är det vanligaste curl-felet — det kan uppstå under DNS-upplösning, TCP-anslutning, SSL-handskakning eller dataöverföring. - Orsaker
- Typiska orsaker inkluderar: långsam eller överbelastad server som inte svarar i tid, nätverksträngsel eller paketförlust, brandvägg som tyst släpper paket (inget avvisande, bara tystnad), för strikta timeout-värden satta med
--connect-timeouteller--max-time, eller en proxykonfigurationsfel som orsakar fördröjningar. - Så åtgärdar du
- Öka tidsgränsen:
curl --connect-timeout 30 --max-time 120 URL. Använd verbose-läge för att se var det hänger:curl -v URL. Testa nätverksfördröjning:ping api.example.comochtraceroute api.example.com. Om du sitter bakom en proxy, prova att kringgå den:curl --noproxy '*' URL. För stora filöverföringar, överväg att använda--retry 3med--retry-delay 5.
$ curl --connect-timeout 5 https://slow-api.example.com/dataFel 35: SSL-anslutningsfel
- Vad det betyder
- Din terminal visar
curl: (35) SSL connect error. SSL/TLS-handskakningen misslyckades — curl kunde inte upprätta en säker anslutning med servern. - Orsaker
- Vanliga orsaker: TLS-versionsinkompatibilitet (servern kräver TLS 1.3 men din curl stödjer bara upp till TLS 1.2), chiffer-svitinkompatibilitet, felaktig SSL-konfiguration på servern (utgånget certifikat presenteras under handskakning, ofullständig kedja), servern stödjer faktiskt inte HTTPS på den givna porten, eller en proxy eller brandvägg fångar upp SSL-anslutningen (MITM).
- Så åtgärdar du
- Tvinga en specifik TLS-version:
curl --tlsv1.2 URLellercurl --tlsv1.3 URL. Kontrollera vad servern stödjer:openssl s_client -connect api.example.com:443. Uppdatera curl och OpenSSL till de senaste versionerna. Om servern använder ett självsignerat certifikat är det vanligtvis fel 60 istället — fel 35 indikerar vanligtvis ett protokollnivåfel vid handskakning.
$ curl https://legacy-server.example.com/apiFel 56: Mottagningsfel — anslutningen återställdes
- Vad det betyder
- Din terminal visar
curl: (56) Recv failure: Connection reset by peer. Anslutningen upprättades framgångsrikt, men datamottagningen misslyckades — servern stängde eller återställde anslutningen oväntat under överföringen. - Orsaker
- Detta händer ofta när: servern kraschar eller startar om mitt i överföringen, en lastbalanserare eller proxy avbryter anslutningen (idle-timeout, för stor förfrågan), en brandvägg avslutar långvariga anslutningar, servern har en keep-alive-timeout som är kortare än förväntat, eller det finns ett nätverksavbrott mellan klient och server.
- Så åtgärdar du
- Prova förfrågan igen — tillfälliga nätverksproblem är den vanligaste orsaken. Använd verbose-läge:
curl -v URLför att se exakt var felet uppstår. Om felet inträffar under stora uppladdningar, prova chunked-överföring:curl -H "Transfer-Encoding: chunked" URL. För Git-operationer som visarRPC failed; curl 56, öka bufferten:git config http.postBuffer 524288000.
$ curl https://api.example.com/large-downloadFel 60: SSL-certifikatproblem
- Vad det betyder
- Din terminal visar
curl: (60) SSL certificate problem: unable to get local issuer certificate. curl kunde inte verifiera serverns SSL-certifikat mot dess CA-paket (Certificate Authority). TLS-handskakningen slutfördes på protokollnivå, men certifikatvalideringen misslyckades. - Orsaker
- De vanligaste orsakerna: servern använder ett självsignerat certifikat, certifikatet har gått ut, certifikatkedjan är ofullständig (saknade mellanliggande certifikat), curls CA-paket är föråldrat (vanligt på äldre system eller i Docker-containrar), eller certifikatets Common Name / SAN matchar inte det begärda värdnamnet.
- Så åtgärdar du
- Uppdatera CA-paketet:
curl --cacert /path/to/cacert.pem URL. Ladda ner ett uppdaterat paket från https://curl.se/ca/cacert.pem. För att diagnostisera:openssl s_client -connect api.example.com:443 -showcerts. För självsignerade certifikat i utvecklingsmiljö, användcurl -k URL(använd aldrig i produktion — det inaktiverar all certifikatverifiering). I Docker, installera paketetca-certificates.
$ curl https://self-signed.example.com/apiÖvriga felkoder
Lyckad. Operationen slutfördes utan några fel.
Protokoll som inte stöds. URL:en använder ett protokoll som curl inte byggdes med stöd för.
Felformaterad URL. URL-syntaxen är ogiltig eller kunde inte tolkas.
Kunde inte slå upp proxy. Det angivna proxyvärdennamnet kunde inte slås upp.
Delvis fil. Överföringen avbröts och bara en del av filen togs emot.
Skrivfel. curl kunde inte skriva mottagen data till disk (åtkomst nekad eller disk full).
Kunde inte läsa fil. En lokal fil som refererades i förfrågan kunde inte öppnas eller läsas.
Tomt svar från servern. Servern stängde anslutningen utan att skicka någon data.
SSL CA-certifikatproblem. Kunde inte läsa eller tolka den angivna CA-certifikatfilen.
HTTP/2-strömfel. Ett HTTP/2-protokollnivåströmfel uppstod under överföringen.
Hur man felsöker curl-fel
När curl misslyckas hjälper dessa tre flaggor dig att snabbt identifiera grundorsaken — från DNS-upplösning till SSL-handskakning till svarsinnehåll.
- 1
Aktivera verbose-utdata
Kör
curl -v URLför att se hela förfrågnings-/svarscykeln: DNS-upplösning, TCP-anslutning, TLS-handskakning, skickade förfrågningsheaders och mottagna svarsheaders. Detta är den enskilt mest användbara felsökningsflaggan. - 2
Kontrollera HTTP-statuskoden
Kör
curl -o /dev/null -s -w "%{http_code}" URLför att bara få HTTP-statuskoden (200, 404, 500, etc.) utan svarskroppen. Användbart för snabba hälsokontroller och skript. - 3
Visa fel tyst
Kör
curl -sS URLför att dölja förloppsindikatorn (-s) men fortfarande visa fel (-S). Perfekt för skript där du vill ha ren utdata men behöver fånga upp misslyckanden.
Vanliga frågor
Hur kontrollerar man curl-exitkoden?
Efter att ha kört ett curl-kommando lagras exitkoden i skalets specialvariabel. I Bash/Zsh, kör echo $? direkt efter curl-kommandot. I PowerShell, använd $LASTEXITCODE. I skript kan du kontrollera den med en villkorssats: if curl -sf URL; then echo "OK"; else echo "Failed with code $?"; fi. Exitkod 0 betyder lyckad; alla andra nummer indikerar ett fel. För att se både HTTP-statuskoden och curl-exitkoden, kombinera curl -w "%{http_code}" -o /dev/null -s URL; echo "Exit: $?". Observera att curls exitkod skiljer sig från HTTP-statuskoden — curl returnerar 0 även vid HTTP 404 om du inte använder flaggan --fail.
Hur åtgärdar man curl error 28 (operation timed out)?
Error 28 betyder att förfrågan överskred den maximalt tillåtna tiden. Först, öka tidsgränsen: curl --connect-timeout 30 --max-time 120 URL. --connect-timeout begränsar TCP-anslutningsfasen, medan --max-time begränsar hela operationen. Därefter, diagnostisera flaskhalsen med curl -v URL — verbose-utdatan visar exakt var curl fastnar (DNS, anslutning, TLS eller överföring). Vanliga åtgärder: kontrollera din nätverksanslutning och DNS-inställningar, verifiera att servern svarar (ping och telnet), kringgå proxyservrar med --noproxy '*', och för stora nedladdningar lägg till --retry 3 --retry-delay 5 för automatiska omförsök.
Hur åtgärdar man curl SSL-certifikatfel (error 60)?
Error 60 betyder att curl inte kan verifiera serverns SSL-certifikat. Åtgärden beror på orsaken. För ett föråldrat CA-paket: ladda ner ett nytt från https://curl.se/ca/cacert.pem och använd curl --cacert /path/to/cacert.pem URL. För Docker-containrar: installera paketet ca-certificates (apt-get install ca-certificates). För självsignerade certifikat i utvecklingsmiljö: använd curl -k URL för att hoppa över verifiering — men använd aldrig -k i produktion eftersom det inaktiverar all certifikatkontroll. För att diagnostisera: kör openssl s_client -connect host:443 -showcerts för att inspektera certifikatkedjan. Om certifikatet har gått ut eller värdnamnet inte matchar ligger problemet på serversidan.
Vad betyder curl error 7 (failed to connect)?
Error 7 betyder att curl slog upp värdnamnet till en IP-adress men inte kunde upprätta en TCP-anslutning. Servern nekade aktivt anslutningen eller anslutningsförsöket nådde tidsgränsen på nätverksnivå. Vanliga orsaker: tjänsten körs inte på målvärden (kontrollera med systemctl status eller docker ps), en brandvägg blockerar porten (testa med telnet host port), du använder fel port (t.ex. 80 istället för 443, eller 8080 för en dev-server), eller serverns listen-backlog är full under hög belastning. För att felsöka: använd curl -v URL och leta efter "Connected to" eller "Connection refused" i utdatan.