Introduction à la commande cURL

cURL est une commande Linux très répandue. On peut l’utiliser pour effectuer des requêtes HTTP, transférer des fichiers via FTP ou encore envoyer des e-mails. Dans l’article ci-dessous, nous allons s’attarder sur les différentes utilisations de bases de cette commande avec le protocole HTTP.

Utilisation basique de la commande

 

Pour commencer, regardons ensemble quelques exemples simple de cURL sur linux. Par défaut, cURL affiche le résultat complet de la commande dans la console.

La commande ci-dessus affiche le résultat de la requête GET sur https://www.e-xpertsolutions.com sur la console. Attention: le résultat de la commande n’est cependant pas sauvegardé dans un fichier.

Suivre les redirection HTTP avec cURL

 

Les codes réponses HTTP “302 found” et “301 moved permanently” sont largement utilisés pour rediriger les utilisateurs sur d’autres pages internet. C’est généralement le cas lorsque l’on souhaite rediriger un utilisateur d’un site web sur sa version sécurisée avec https.

la commande ci-dessus tente une connexion HTTP GET sur le site www.e-xpertsolutions.com, obtient un code réponse 302 found et suit le lien fournit dans l’en-tête HTTP Location. Au final, dans notre cas, cette commande est équivalente à faire une requête directement sur le site https://www.e-xpertsolutions.com/

Afficher les en-têtes HTTP dans la réponse

 

Pour voir le contenu de l’en-tete HTTP Location lors d’une réponse de redirection, nous pouvons entrer la commande suivante:

Dans ce cas, cela change la méthode GET par HEAD. Le résultat de la commande ci-dessus montre clairement l’URL sur laquelle l’utilisateur va être redirigé:

Ignorer les erreurs de certificat SSL

 

L’outil permet de lancer des requêtes sur des sites en https. Il arrive alors souvent que nous ayons besoin d’ignorer les erreurs de certificats SSL notamment sur des services de test. L’option “-k” permet d’éviter l’affichage de l’erreur suivante :

La commande suivante permet alors d’afficher le contenu et de s’affranchir de la validation du certificat SSL présenté par le serveur:

Pour obtenir plus d’informations sur le certificat présenté par le serveur, vous pouvez ajouter l’option “-v” à votre commande initiale:

Le résultat de la commande ci-dessus permet d’avoir l’état du certificat SSL présenté par le serveur:

Faire un POST HTTP avec cURL

 

Nous avons vu précédemment que l’outil cURL était capable de faire des requêtes GET sur des URLs. La commande est également capable de faire des requêtes POST, PUT, DELETE. Ces méthodes peuvent être spécifiées avec l’option “-X”. L’option “-d” permet, quant à elle, de spécifier le contenu à envoyer dans le POST:

Par défaut, la commande ci-dessus envoi le contenu de local_filename dans le POST et spécifie un Content-Type “application/x-www-form-urlencoded” dans la requête:

Si l’on souhaite faire un POST sur un formulaire HTTP en spécifiant un username et un mot de passe, il faut par exemple entrer la commande suivante:

Si maintenant, l’objectif est de faire un POST de contenu JSON vers une API REST, la commande suivante permet d’y arriver:

Attention, il est important d’échapper correctement le contenu JSON pour ne pas casser le fonctionnement de la commande. De plus, l’option “-H” permet de spécifier le type de contenu envoyé dans le POST.

Fournir un header Authorization pour authentifier la requête HTTP

 

La commande suivante permet d’ajouter un header Authorization avec le contenu “admin:admin” encodé en base64. Cette commande authentifie l’utilisateur si