Structure des requêtes de webhook et rôle des en-têtes
Un webhook est un mécanisme de communication inversé par lequel un service expéditeur transmet des données en temps réel à un système récepteur lors de la survenue d'un événement. Cette transmission s'effectue sous la forme d'une requête HTTP. Pour analyser et comprendre la structure de ces requêtes, il est essentiel d'examiner séparément la méthode HTTP, les en-têtes (headers) et le corps (body) du message.
Les en-têtes jouent un rôle déterminant dans la communication par webhook. Ils transmettent des métadonnées cruciales qui indiquent au serveur récepteur comment traiter le flux de données. Par exemple, l'en-tête Content-Type informe le serveur du formatage du corps de la requête, tandis que d'autres en-têtes spécifiques fournissent des jetons d'authentification, des identifiants d'événements uniques ou des signatures de sécurité. L'analyse minutieuse de ces en-têtes permet de diagnostiquer les erreurs de communication et de s'assurer que le serveur récepteur traite la requête avec le bon contexte applicatif.
Formats de corps de webhook: JSON et URL-encoded
Le corps d'une requête de webhook contient la charge utile (payload) décrivant l'événement. Les deux formats les plus répandus pour structurer ces données sont le format JSON (JavaScript Object Notation) et le format de formulaire codé en URL (URL-encoded).
- JSON: Ce format représente les données sous forme d'objets structurés avec des paires clé-valeur et des tableaux. Lors de l'inspection d'un corps JSON, l'outil utilise la fonction standard
JSON.parsepour valider et réorganiser les données. Cette opération de traitement implique que l'agencement d'origine des champs ainsi que les espaces blancs initiaux sont modifiés dans la vue formatée. - URL-encoded: Souvent utilisé pour les formulaires simples, ce format sérialise les données sous forme de paires clé-valeur jointes par des esperluettes (
&) et des signes d'égalité (=), où les caractères spéciaux sont convertis en séquences d'échappement de pourcentage (comme%20pour un espace).
Pour les autres types de contenus, la charge utile reste affichée sous forme de texte brut afin d'éviter toute altération ou mauvaise interprétation du format d'origine.
Signatures et horodatages de sécurité
La sécurité des webhooks repose fréquemment sur l'utilisation de signatures cryptographiques et d'horodatages (timestamps) transmis dans les en-têtes de la requête. Les expéditeurs de webhooks intègrent ces éléments pour permettre au destinataire de valider l'origine et l'intégrité du message.
L'outil identifie automatiquement la présence de ces champs de sécurité en analysant les noms des en-têtes selon des motifs récurrents, tels que:
signaturehmacdigest- Les appellations courantes liées aux horodatages (timestamps)
Il convient de distinguer l'inspection visuelle de ces en-têtes et la vérification effective de l'authenticité de la requête. L'outil se limite à détecter et lister ces champs. Il ne procède à aucun calcul de code HMAC, n'exécute aucun algorithme cryptographique, ne valide pas les octets originaux de la charge utile, ne gère pas de clé secrète, ne contrôle pas la fenêtre de tolérance aux attaques par rejeu (replay window) et n'effectue aucune vérification spécifique à un fournisseur. La présence d'un champ de signature ne prouve pas que la requête est authentique — une véritable vérification nécessite les règles de signature de l'expéditeur, le secret ou la clé, ainsi que les octets de la requête d'origine.
Guide d'utilisation et limites de saisie
Pour inspecter une requête, vous devez saisir la méthode HTTP, les en-têtes et le corps brut de la requête capturée. L'outil applique des règles strictes de validation et de dimensionnement pour garantir la stabilité du traitement local:
- Méthode: Sélectionnable parmi une liste définie: POST, PUT, PATCH, GET, DELETE.
- En-têtes: Saisis à raison d'un en-tête par ligne au format Nom: valeur. La limite maximale est fixée à 200 lignes d'en-têtes non vides et à un total de 100 000 caractères.
- Corps: Le corps brut exact capturé avant toute analyse côté serveur doit être collé. La taille maximale autorisée pour le corps est de 1 000 000 de caractères.
Gestion des erreurs de formatage
Si les données saisies ne respectent pas les critères de validation, l'interface affiche des messages d'erreur précis:
- Si aucune donnée n'est soumise: Collez d'abord au moins un en-tête ou un corps de requête.
- Si la longueur des en-têtes dépasse la limite: Les en-têtes sont trop longs pour cet outil. Supprimez les valeurs non liées ou répétées.
- Si le nombre de lignes d'en-têtes est supérieur à 200: Il y a trop de lignes d'en-tête. Limitez la demande à 200 en-têtes ou moins.
- Si une ligne d'en-tête ne respecte pas la structure attendue:
‹line›: La ligne d'en-tête n'est pas valide. Utiliser Nom: valeur. - Si la taille du corps excède la limite: Le corps est trop long pour cet outil. Gardez-le sous 1 000 000 de caractères.
- Si un corps de type JSON comporte des erreurs de syntaxe: Le corps ressemble à JSON mais n'a pas pu être analysé.
- Si un corps de formulaire présente une erreur d'encodage: Le corps du formulaire contient un pourcentage d'échappement incomplet.
Test local avec cURL
L'un des aspects essentiels du développement de webhooks est la capacité à reproduire localement les requêtes capturées afin de tester le comportement de votre application. L'outil génère automatiquement une commande cURL prête à être exécutée dans votre terminal.
Cette commande cURL générée est configurée de manière fixe pour cibler l'adresse locale http://localhost:3000/webhooks. Elle inclut de manière appropriée les en-têtes saisis et la charge utile sous une forme correctement échappée pour le shell, vous permettant de simuler l'arrivée du webhook sur votre serveur de développement local sans avoir à reconstruire manuellement la syntaxe de la ligne de commande.
Confidentialité des données de requête
La sécurité et la confidentialité de vos données de développement sont préservées lors de l'utilisation de cet outil. Votre demande collée reste dans votre navigateur. BroBroGo ne le télécharge ni ne l'enregistre. L'intégralité du traitement, de l'analyse syntaxique et de la génération de la commande cURL s'effectue localement au sein de votre propre navigateur web.
FAQ
Cette page peut-elle recevoir un rappel de webhook en direct?
Non. Collez ici une demande capturée pour inspection. La page ne crée pas de point de terminaison public, ne reçoit pas de rappels et n'envoie pas la demande de test générée.
Quels formats de corps de webhook puis-je inspecter?
Les corps de formulaire codés en JSON et URL sont détectés et formatés. Les autres corps restent sous forme de texte brut afin que l'outil ne devine pas le contenu XML, multipart ou binaire.
La recherche d'un champ de signature prouve-t-elle que la demande est authentique?
Non. L'outil affiche uniquement la signature et les en-têtes d'horodatage associés. La véritable vérification nécessite les règles de signature exactes de l’expéditeur, la clé secrète ou publique et les octets de la demande d’origine.