Aide-mémoire Développement

Aide-mémoire des options de curl

Les options de curl qu'on utilise vraiment : méthodes, en-têtes, données, JSON, formulaires, authentification, cookies, redirections, téléchargements, TLS, proxys, durées et débogage, avec des exemples.

Dernière vérification :

AdSense Placeholder
Slot: header_reference_page
Sur cette page

curl transfère des données vers et depuis des URL en ligne de commande. Toutes les options ci-dessous existent dans curl 8.18 (curl --help all), et les en-têtes envoyés par chacune ont été vérifiés avec un serveur local qui renvoie la requête reçue. Construisez des commandes visuellement avec le générateur de commandes curl, ou convertissez-en une en Python, JavaScript ou Go avec le convertisseur de curl en code. Les exemples utilisent https://api.example.com.

Méthode et corps de la requête

Option Forme longue Rôle Exemple
-X --request Définit la méthode curl -X DELETE https://api.example.com/items/7
-d --data Envoie un corps ; implique POST et Content-Type: application/x-www-form-urlencoded curl -d 'a=1&b=2' https://api.example.com/form
--data-raw Comme -d, mais un @ initial n'est pas lu comme un nom de fichier curl --data-raw '@not-a-file' ...
--data-binary Envoie les données telles quelles, en conservant les sauts de ligne curl --data-binary @dump.bin ...
--data-urlencode Encode la valeur pour une URL curl --data-urlencode 'q=a b&c' ...
--json Envoie du JSON : POST, Content-Type et Accept: application/json curl --json '{"name":"Ana"}' https://api.example.com/users
-F --form Formulaire multipart (envoi de fichiers) curl -F '[email protected]' -F 'title=Hi' ...
-G --get Place les données de -d dans la chaîne de requête et utilise GET curl -G -d q=test https://api.example.com/search
--url-query Ajoute un paramètre de requête encodé curl --url-query 'q=a+b' ... → ?q=a%2bb
-T --upload-file Envoie un fichier avec PUT curl -T report.pdf https://files.example.com/
-I --head Envoie HEAD : en-têtes uniquement curl -I https://example.com

-d @fichier lit le corps depuis un fichier et supprime les sauts de ligne ; utilisez --data-binary @fichier pour l'envoyer intact. -X POST n'est jamais nécessaire avec -d, --json ou -F.

En-têtes, authentification et cookies

Option Forme longue Rôle Exemple
-H --header Ajoute ou remplace un en-tête (Nom: sans rien après le supprime) -H 'Authorization: Bearer TOKEN'
-A --user-agent Définit User-Agent -A 'MyAgent/1.0'
-e --referer Définit Referer -e https://example.com/
-u --user Authentification de base (utilisateur:mot de passe) -u alice:s3cret
--oauth2-bearer Envoie Authorization: Bearer --oauth2-bearer TOKEN
-b --cookie Envoie des cookies ou les lit depuis un fichier -b 'session=abc', -b cookies.txt
-c --cookie-jar Enregistre les cookies reçus dans un fichier -c cookies.txt
--compressed Demande et décompresse gzip, deflate, brotli et zstd --compressed
-n --netrc Lit les identifiants dans ~/.netrc -n

Réponses et sortie

Option Forme longue Rôle
-i --show-headers Affiche les en-têtes de la réponse avant le corps (--include est l'ancien nom)
-D --dump-header Écrit les en-têtes de la réponse dans un fichier (-D - pour le terminal)
-o --output Enregistre le corps dans un fichier
-O --remote-name Enregistre sous le nom de fichier de l'URL
-J --remote-header-name Avec -O, utilise le nom donné par Content-Disposition
--create-dirs Crée les répertoires manquants pour -o
-C --continue-at Reprend un téléchargement (-C - détermine le décalage)
-r --range Demande seulement une plage d'octets : -r 0-99
-s --silent Pas de compteur de progression ni de messages d'erreur
-S --show-error Avec -s, affiche quand même les erreurs
-f --fail Quitte avec le code 22 et sans corps sur un HTTP 400 ou plus
--fail-with-body Comme -f, mais enregistre quand même le corps
-w --write-out Affiche des variables après le transfert
-# --progress-bar Barre de progression simple à la place du compteur habituel

Redirections, nouvelles tentatives et délais

Option Forme longue Rôle
-L --location Suit les redirections
--max-redirs Limite le nombre de redirections suivies
-m --max-time Durée totale maximale en secondes
--connect-timeout Durée maximale de connexion
--retry Réessaie N fois en cas d'échec transitoire
--retry-delay Secondes entre deux tentatives
--retry-all-errors Réessaie après toute erreur, pas seulement les transitoires
--limit-rate Plafonne le débit : --limit-rate 500K
-Z --parallel Traite plusieurs URL en même temps

Voyez chaque étape d'une chaîne de redirections, avec ses codes d'état, dans le traceur de chaîne de redirections HTTP.

Connexion, TLS et proxys

Option Forme longue Rôle
-k --insecure Ignore la vérification du certificat (tests uniquement)
--cacert Fait confiance à un lot d'AC précis
--cert / --key Certificat et clé client (TLS mutuel)
--tlsv1.2 Exige au moins TLS 1.2 (--tls-max fixe le plafond)
--http1.1 / --http2 / --http3 Choisit la version de HTTP
-4 / -6 --ipv4 / --ipv6 Résout les noms en IPv4 ou en IPv6 uniquement
--resolve Associe un hôte à une IP : --resolve example.com:443:192.0.2.10
--connect-to Envoie la requête à un autre hôte et port
-x --proxy Utilise un proxy : -x http://proxy.example.com:3128
--noproxy Hôtes qui contournent le proxy
--unix-socket Se connecte via un socket Unix (API Docker)

Débogage et mesure des durées

Option Forme longue Rôle
-v --verbose Affiche les en-têtes de requête et de réponse ainsi que la négociation TLS
--trace-ascii Journalise dans un fichier tout ce qui est envoyé et reçu
--trace-time Ajoute des horodatages à la sortie détaillée et aux traces
-K --config Lit les options depuis un fichier

Variables utiles pour -w : %{http_code}, %{time_namelookup}, %{time_connect}, %{time_starttransfer}, %{time_total}, %{size_download}, %{url_effective}, %{remote_ip}.

Recettes

Tâche Commande
Code d'état uniquement curl -s -o /dev/null -w '%{http_code}\n' https://example.com
Décomposition des durées curl -s -o /dev/null -w 'dns %{time_namelookup} connect %{time_connect} ttfb %{time_starttransfer} total %{time_total}\n' https://example.com
En-têtes seuls, en suivant les redirections curl -sIL https://example.com
POST de JSON avec un jeton curl --json '{"q":"test"}' -H 'Authorization: Bearer TOKEN' https://api.example.com/search
Télécharger en reprenant si interrompu curl -L -C - -O https://example.com/file.iso
Tester un serveur avant de changer le DNS curl --resolve example.com:443:203.0.113.10 https://example.com
Faire échouer un script sur une erreur HTTP curl -fsS https://api.example.com/health

Mettez entre guillemets, dans le shell, les URL qui contiennent & ou ?, et encodez en pourcentage les caractères spéciaux des valeurs de requête avec l'encodeur d'URL. Pour contrôler les en-têtes d'un site sans terminal, utilisez le visualiseur d'en-têtes HTTP.

Essayez ces outils

Voir aussi

  • Aide-mémoire Aide-mémoire des en-têtes HTTP
    En-têtes de requête et de réponse, directives Cache-Control, en-têtes de sécurité, attributs de cookie et en-têtes CORS.
  • Aide-mémoire Aide-mémoire des codes d'état HTTP
    Les codes d'état HTTP que vous rencontrerez vraiment, par classe, avec les paires qu'on confond (401 ou 403.
  • Glossaire HTTP
    Le HTTP (Hypertext Transfer Protocol) est le protocole que les navigateurs et les serveurs utilisent pour demander et envoyer des pages.
  • Glossaire User agent (agent utilisateur)
    Un user agent (agent utilisateur) est le logiciel qui émet une requête web, comme un navigateur ou un robot.
  • Glossaire Authentification basique
    L'authentification basique HTTP envoie un nom d'utilisateur et un mot de passe dans un en-tête de requête.
AdSense Placeholder
Slot: footer_leaderboard