Créateur de Commande curl
Construisez une véritable commande curl fonctionnelle à partir d'une méthode HTTP, d'une URL, d'en-têtes, d'un corps et d'options d'authentification — avec un échappement shell correct appliqué automatiquement — et copiez-la en un clic.
235 vues
Une brève histoire de curl
curl a été créé en 1998 par le développeur suédois Daniel Stenberg, qui en a écrit la première version pour récupérer automatiquement des taux de change pour un bot IRC sur un canal de discussion suédois — un petit besoin personnel, pas un grand projet d'infrastructure. Les gens ont continué à demander davantage de protocoles et d'options, et ce petit utilitaire est devenu un outil en ligne de commande généraliste pour transférer des données via HTTP, HTTPS, FTP puis, avec le temps, des dizaines d'autres protocoles. Stenberg est resté le mainteneur principal de curl pendant pratiquement toute son existence ; aujourd'hui, curl est installé par défaut sur macOS, sur pratiquement toutes les distributions Linux et, depuis 2018, sur Windows 10 et versions ultérieures ; on estime qu'il fonctionne sur des milliards d'appareils dans le monde, des routeurs aux voitures en passant par les consoles de jeu et presque tous les pipelines d'intégration continue qui communiquent avec une API. Ce qui a commencé comme la solution à un problème personnel très restreint est aujourd'hui, sans doute, le client HTTP en ligne de commande le plus largement déployé qui existe, et l'un des logiciels open source dont l'internet dépend le plus discrètement.
Comprendre les options générées par cet outil
Par défaut, curl ne suit pas les redirections HTTP. Si un serveur répond avec un statut 301 ou 302 et un en-tête Location pointant ailleurs, curl seul affiche cette réponse de redirection — ou un corps vide — puis s'arrête ; il ne poursuit pas automatiquement la nouvelle URL comme le fait silencieusement un navigateur web. Cela déroute un très grand nombre d'utilisateurs novices de curl : une URL qui fonctionne parfaitement dans un navigateur renvoie une réponse confuse, vide ou incorrecte depuis curl, sans raison apparente, simplement parce que le navigateur a suivi une redirection que curl n'a pas suivie. La solution est l'option -L (--location), qui indique à curl de suivre la chaîne de redirections jusqu'à sa destination finale. C'est un besoin si courant que de nombreux ingénieurs ajoutent -L par défaut chaque fois qu'ils ne testent pas délibérément le comportement des redirections lui-même.
Dès qu'une commande inclut des en-têtes ou un corps contenant des espaces, des guillemets ou des caractères spéciaux du shell ($, &, ;, accents graves), la façon de les mettre entre guillemets cesse d'être cosmétique — elle fait toute la différence entre une requête qui fonctionne et une que le shell dénature avant même que curl ne la voie. Un en-tête comme Authorization: Bearer abc 123 saisi sans guillemets est scindé par le shell au niveau de l'espace, si bien que curl reçoit Authorization: et Bearer comme deux arguments distincts et cassés au lieu d'un seul. Entourer toute la valeur de guillemets simples indique au shell de traiter littéralement tout ce qui se trouve à l'intérieur, espaces compris — mais des guillemets simples ne peuvent pas contenir un caractère guillemet simple littéral, puisque c'est précisément ce caractère qui referme la citation. L'échappement standard pour ce cas consiste à fermer le guillemet, insérer un guillemet simple précédé d'une barre oblique inverse, puis rouvrir le guillemet : '\''. Cet outil applique automatiquement cet échappement à chaque valeur qu'il insère, de sorte que les en-têtes, le contenu du corps et les identifiants d'authentification contenant des espaces, des guillemets ou d'autres caractères spéciaux produisent toujours une commande qui s'exécute correctement — sans que vous ayez à mémoriser vous-même les règles d'échappement.
Questions fréquentes
Pourquoi ai-je besoin de l'option -L pour certaines commandes curl ?
curl ne suit pas les redirections HTTP par défaut. Si le serveur que vous appelez répond avec un statut 301 ou 302 et un en-tête Location, curl seul vous montre cette réponse de redirection au lieu du contenu final et s'arrête là. Les navigateurs suivent les redirections silencieusement, c'est pourquoi une URL qui « fonctionne dans le navigateur » peut renvoyer une réponse vide ou inattendue depuis curl. Ajouter -L (--location) indique à curl de suivre automatiquement la chaîne de redirections jusqu'à la destination finale.
Pourquoi ma commande curl échoue-t-elle quand un en-tête contient un espace ?
C'est le shell — pas curl — qui divise une ligne de commande en arguments distincts, et il le fait par défaut au niveau des espaces non protégés par des guillemets. Une valeur d'en-tête comme Bearer abc123 saisie sans guillemets devient deux mots séparés que le shell transmet à curl comme s'il s'agissait de deux arguments différents, cassant l'en-tête. Entourer la valeur de guillemets simples indique au shell « traite tout ce qui est à l'intérieur comme un seul bloc littéral, espaces compris » — exactement ce que cet outil fait automatiquement pour chaque champ que vous remplissez.
Quelle est la différence entre le mode JSON et le mode Raw pour le corps de la requête ?
Le mode JSON ajoute automatiquement un en-tête Content-Type: application/json à côté de votre corps, indiquant au serveur d'interpréter les données comme du JSON — la plupart des API modernes exigent la présence de cet en-tête, sinon elles rejettent ou interprètent mal la requête. Le mode Raw envoie exactement le texte que vous avez saisi sans supposer aucun type de contenu, ce qui est le bon choix pour des données encodées en formulaire, du texte brut, du XML, ou tout corps où vous souhaitez définir vous-même votre propre en-tête Content-Type via la section des en-têtes.
L'authentification par jeton Bearer est-elle la même chose que l'authentification Basic ?
Non, elles fonctionnent différemment. L'authentification Bearer envoie un en-tête Authorization: Bearer <jeton> transportant un jeton d'accès opaque, généralement émis par un flux OAuth ou un système de clé API — le serveur recherche le jeton au lieu de le décoder. L'authentification Basic envoie Authorization: Basic <base64(utilisateur:motdepasse)>, ce qui n'est simplement que votre nom d'utilisateur et votre mot de passe assemblés et encodés en base64 — l'encodage n'est pas du chiffrement, donc l'authentification Basic ne doit jamais être utilisée que via HTTPS, jamais en HTTP simple, sinon les identifiants sont effectivement envoyés en clair.
Qui a créé curl, et est-il toujours activement maintenu ?
curl a été créé en 1998 par Daniel Stenberg, à l'origine pour récupérer des taux de change pour un bot IRC. Stenberg en est resté le mainteneur principal pendant pratiquement toute l'histoire de curl et continue de le développer activement aujourd'hui. Loin d'être un projet de loisir, curl est aujourd'hui l'un des logiciels les plus largement déployés au monde — intégré aux systèmes d'exploitation, aux appareils embarqués et à d'innombrables applications — et sa sécurité comme sa fiabilité sont prises tout aussi au sérieux par une vaste communauté de contributeurs.
Outils similaires
Signaler un problème
Créateur de Commande curl
Commentaires
Pas encore de commentaires — soyez le premier à en écrire un !