curl Commando Bouwer
Bouw een echt, werkend curl-commando op uit een HTTP-methode, URL, headers, body en authenticatie-opties — met automatisch correct toegepaste shell-aanhaling — en kopieer het met één klik.
232 weergaven
Een korte geschiedenis van curl
curl werd in 1998 gemaakt door de Zweedse ontwikkelaar Daniel Stenberg, die de eerste versie schreef om automatisch wisselkoersen op te halen voor een IRC-bot in een Zweeds chatkanaal — een kleine, persoonlijke behoefte, geen groots infrastructuurplan. Mensen bleven om meer protocollen en meer opties vragen, en het kleine hulpprogramma groeide uit tot een algemeen commandoregelprogramma voor het overbrengen van gegevens via HTTP, HTTPS, FTP en uiteindelijk tientallen andere protocollen. Stenberg is sindsdien vrijwel de gehele levensduur van curl de hoofdonderhouder gebleven; tegenwoordig wordt curl standaard meegeleverd op macOS, vrijwel elke Linux-distributie en — sinds 2018 — Windows 10 en nieuwer, en naar schatting draait het op miljarden apparaten wereldwijd, van routers en auto's tot gameconsoles en bijna elke continuous-integration-pipeline die met een API praat. Wat begon als een oplossing voor één beperkt persoonlijk probleem is nu vermoedelijk de meest gebruikte commandoregel-HTTP-client die er is, en een van de opensourcecomponenten waar het internet stilletjes het meest van afhankelijk is.
De vlaggen lezen die deze tool genereert
Standaard volgt curl geen HTTP-omleidingen. Als een server reageert met een 301- of 302-status en een Location-header die ergens anders naartoe wijst, drukt kaal curl die omleidingsrespons — of een lege inhoud — af en stopt; het jaagt de nieuwe URL niet automatisch na zoals een webbrowser stilzwijgend doet. Dit brengt een enorm aantal beginnende curl-gebruikers in verwarring: een URL die perfect werkt in een browser geeft bij curl om geen duidelijke reden een verwarrende lege of foute respons, simpelweg omdat de browser een omleiding volgde die curl niet volgde. De oplossing is de vlag -L (--location), die curl vertelt de omleidingsketen tot zijn uiteindelijke bestemming te volgen. Het is zo'n veelvoorkomende behoefte dat veel engineers standaard naar -L grijpen, tenzij ze bewust het omleidingsgedrag zelf testen.
Zodra een commando headers of body-inhoud bevat met spaties, aanhalingstekens of shell-specifieke tekens ($, &, ;, backticks), houdt het aanhalen op cosmetisch te zijn — het is het verschil tussen een verzoek dat werkt en een dat de shell verminkt voordat curl het ooit ziet. Een header zoals Authorization: Bearer abc 123, getypt zonder aanhalingstekens, wordt door de shell op de spatie opgesplitst, zodat curl Authorization: en Bearer als twee afzonderlijke, kapotte argumenten ontvangt in plaats van één. De hele waarde tussen enkele aanhalingstekens plaatsen vertelt de shell om alles erbinnen letterlijk te behandelen, spaties inbegrepen — maar enkele aanhalingstekens kunnen zelf geen letterlijk enkel aanhalingsteken bevatten, aangezien dat teken juist het aanhalingsteken sluit. De standaard-ontsnapping voor dat geval is het aanhalingsteken te sluiten, een met backslash ontsnapt enkel aanhalingsteken in te voegen en het aanhalingsteken opnieuw te openen: '\''. Deze tool past die ontsnapping automatisch toe op elke waarde die hij invoegt, zodat headers, body-inhoud en authenticatiegegevens met spaties, aanhalingstekens of andere speciale tekens altijd een correct werkend commando opleveren — zonder dat u de ontsnappingsregels zelf hoeft te onthouden.
Veelgestelde vragen
Waarom heb ik de vlag -L nodig bij sommige curl-commando's?
curl volgt HTTP-omleidingen standaard niet. Als de server die u aanroept reageert met een 301- of 302-status en een Location-header, toont kaal curl die omleidingsrespons in plaats van de uiteindelijke inhoud en stopt daar. Browsers volgen omleidingen stilzwijgend, waardoor een URL die "werkt in de browser" bij curl een lege of onverwachte respons kan opleveren. Het toevoegen van -L (--location) vertelt curl om de omleidingsketen automatisch te volgen tot de uiteindelijke bestemming.
Waarom mislukt mijn curl-commando wanneer een header een spatie bevat?
De shell — niet curl — splitst een commandoregel op in aparte argumenten, en standaard splitst deze op niet-aangehaalde spaties. Een headerwaarde zoals Bearer abc123, getypt zonder aanhalingstekens, wordt twee aparte woorden die de shell aan curl doorgeeft alsof het twee verschillende argumenten zijn, waardoor de header kapotgaat. De waarde tussen enkele aanhalingstekens plaatsen vertelt de shell "behandel alles erbinnen als één letterlijk stuk, spaties inbegrepen", wat precies is wat deze tool automatisch doet voor elk veld dat u invult.
Wat is het verschil tussen JSON-modus en Raw-modus voor de request body?
JSON-modus voegt automatisch een header Content-Type: application/json toe naast uw body, en vertelt de server om de payload als JSON te ontleden — de meeste moderne API's vereisen dat deze header aanwezig is, anders wijzen ze het verzoek af of interpreteren ze het verkeerd. Raw-modus verstuurt precies de tekst die u typte zonder aangenomen content type, wat de juiste keuze is voor formuliergecodeerde gegevens, platte tekst, XML, of elke body waarbij u uw eigen Content-Type-header handmatig wilt instellen via de headers-sectie.
Is Bearer-token-authenticatie hetzelfde als Basic-authenticatie?
Nee, ze werken anders. Bearer-authenticatie stuurt een header Authorization: Bearer <token> met een ondoorzichtig toegangstoken, doorgaans uitgegeven door een OAuth-flow of API-sleutelsysteem — de server zoekt het token op in plaats van het te decoderen. Basic-authenticatie stuurt Authorization: Basic <base64(gebruikersnaam:wachtwoord)>, wat simpelweg uw gebruikersnaam en wachtwoord samengevoegd en base64-gecodeerd is — codering is geen encryptie, dus Basic-authenticatie mag alleen via HTTPS worden gebruikt, nooit via kaal HTTP, anders worden de inloggegevens feitelijk onversleuteld verzonden.
Wie heeft curl gemaakt, en wordt het nog actief onderhouden?
curl werd in 1998 gemaakt door Daniel Stenberg, oorspronkelijk om wisselkoersen op te halen voor een IRC-bot. Stenberg is vrijwel de gehele geschiedenis van curl de hoofdonderhouder gebleven en blijft het tot op de dag van vandaag actief ontwikkelen. Verre van een hobbyproject is curl nu een van de meest verspreide stukken software ter wereld — ingebed in besturingssystemen, embedded apparaten en talloze applicaties — en de veiligheid en correctheid ervan worden dienovereenkomstig serieus genomen door een grote bijdragende gemeenschap.
Vergelijkbare tools
Probleem melden
curl Commando Bouwer
Reacties
Nog geen reacties — schrijf de eerste!