Option cURL | Description | Exemple d'utilisation |
---|---|---|
-H , --header | Transmettre les en-têtes personnalisés au serveur | curl -H "Header: Value" http://example.com |
-A , --user-agent | Définir la chaîne User-Agent | curl -A "MyAgent" http://example.com |
-e , --referer | Définir l'en-tête du référent | curl -e "http://referrer.com" http://example.com |
-b , --cookie | Envoyer des cookies à partir d'une chaîne ou d'un fichier | curl -b "name=value" http://example.com |
-d , --data | Envoyer des données dans une requête POST | curl -d "key=value" http://example.com |
L'envoi d'en-têtes HTTP personnalisés avec cURL est essentiel pour tester et déboguer des applications Web. Dans cet article, nous allons découvrir comment envoyer des en-têtes HTTP à l'aide de cURL, un puissant outil de ligne de commande permettant de transférer des données avec des URL.
Comprendre les en-têtes HTTP
Les en-têtes HTTP sont des paires clé-valeur envoyées dans les requêtes et les réponses entre les clients et les serveurs. Ils transmettent des méta-informations sur la requête ou la réponse, telles que le type de contenu, les informations d'identification d'autorisation et les directives de mise en cache. Les en-têtes HTTP courants incluent :
Nom de l'en-tête | But |
---|---|
User-Agent | Identifie le logiciel client |
Accept | Spécifie les types de contenu acceptables |
Authorization | Contient les informations d'identification pour l'authentification |
Content-Type | Indique le type de média de la ressource |
Referer | L'adresse de la page Web précédente |
Pourquoi envoyer des en-têtes HTTP personnalisés avec cURL ?
Les en-têtes HTTP personnalisés vous permettent de :
- Simulez des requêtes provenant de différents navigateurs ou appareils.
- Tester les API qui nécessitent des en-têtes spécifiques.
- Déboguer les problèmes en modifiant les en-têtes.
- Contrôlez la mise en cache et la négociation du contenu.
- Authentifier les demandes adressées aux ressources protégées.
Envoi d'en-têtes HTTP avec cURL
En utilisant le -H
ou --header
Option
Pour envoyer un en-tête HTTP personnalisé avec cURL, utilisez le -H
ou --header
option suivie de l'en-tête :
curl -H "Header-Name: Header-Value" http://example.com
En-têtes multiples
Vous pouvez envoyer plusieurs en-têtes en spécifiant plusieurs -H
options:
curl -H "First-Header: Value1" -H "Second-Header: Value2" http://example.com
Remplacement ou modification des en-têtes par défaut
cURL envoie automatiquement certains en-têtes comme Host
et User-Agent
. Pour remplacer un en-tête par défaut, spécifiez-le avec une nouvelle valeur. Par exemple, pour modifier le User-Agent
:
curl -H "User-Agent: MyCustomAgent" http://example.com
Si vous souhaitez supprimer un en-tête, définissez-le sur une chaîne vide :
curl -H "Accept:" http://example.com
Exemples d'envoi d'en-têtes HTTP avec cURL
Exemple : Définition de l'agent utilisateur
Le User-Agent
L'en-tête identifie le logiciel client. Pour le définir :
curl -H "User-Agent: Mozilla/5.0" http://example.com
Alternativement, vous pouvez utiliser le -A
option:
curl -A "Mozilla/5.0" http://example.com
Exemple : Ajout d'un en-tête d'autorisation
Pour les API qui nécessitent une authentification, vous devrez peut-être envoyer un Authorization
en-tête:
curl -H "Authorization: Bearer your_token_here" http://api.example.com
Exemple : Définition du type de contenu pour les requêtes POST
Lors de l'envoi de données dans une requête POST, vous devrez peut-être spécifier le Content-Type
en-tête:
curl -d '{"key":"value"}' -H "Content-Type: application/json" http://example.com/api
Exemple : utilisation d'en-têtes personnalisés avec des proxys
Si vous utilisez un proxy pour envoyer vos requêtes, vous pouvez combiner des options de proxy avec des en-têtes personnalisés :
curl -x http://proxyelite.info:8080 -H "Custom-Header: Value" http://example.com
Conseils et bonnes pratiques
- Entourer les en-têtes de guillemets: Placez toujours les valeurs d'en-tête entre guillemets pour éviter toute interprétation du shell, en particulier lorsqu'elles contiennent des espaces ou des caractères spéciaux.
- Mode verbeux:Utiliser le mode verbeux
-v
pour voir les en-têtes envoyés et reçus. Ceci est utile pour le débogage :
curl -v -H "Header: Value" http://example.com
- Données sensiblesSoyez prudent lorsque vous envoyez des données sensibles dans les en-têtes, en particulier lorsque vous partagez des exemples de commandes ou des journaux.
- En-têtes par défaut: N'oubliez pas que cURL envoie des en-têtes par défaut. Leur remplacement peut affecter la façon dont le serveur répond.
Erreurs courantes à éviter
- Citations manquantes:Oublier les guillemets autour des en-têtes peut entraîner des erreurs ou un comportement inattendu.
- Syntaxe d'en-tête incorrecte: Les en-têtes doivent être au format
Header-Name: Value
. - Sensibilité à la casse:Bien que les noms d'en-tête ne soient pas sensibles à la casse, il est recommandé d'utiliser une majuscule standard.
Conclusion
L'envoi d'en-têtes HTTP avec cURL est simple et efficace. Que vous testiez des API ou que vous simuliez différents clients, la maîtrise des options d'en-tête de cURL améliore votre capacité à interagir efficacement avec les serveurs Web.