Vous êtes-vous déjà demandé comment vos API se comportent en coulisses ? Comment savoir si elles envoient et reçoivent les bonnes données, ou si elles sont modifiées par des intermédiaires en cours de route ? C'est là que la méthode HTTP TRACE s'avère utile. La méthode HTTP TRACE est un type spécial de requête HTTP qui effectue un test de bouclage de message le long du chemin vers la ressource cible. Elle vous permet de voir le message exact qui a été reçu par le destinataire final, à l'exclusion de toute donnée sensible, telle que les cookies ou les informations d'identification.
Dans cet article de blog, je vais vous montrer comment utiliser la méthode HTTP TRACE pour déboguer vos API comme un pro. Je vais expliquer ce qu'est la méthode HTTP TRACE, comment elle fonctionne et quels sont ses avantages. Je vais également vous montrer comment utiliser Apidog.
Qu'est-ce que la méthode HTTP TRACE ?
La méthode HTTP TRACE est l'une des méthodes HTTP standard, définie dans la spécification RFC 2616. Elle est utilisée pour effectuer un test de bouclage de message le long du chemin vers la ressource cible, fournissant un mécanisme de débogage utile. Le destinataire final de la requête doit refléter le message reçu, à l'exclusion de tout champ susceptible de contenir des données sensibles, vers le client sous forme de corps de message d'une réponse 200 (OK) avec un Content-Type de message/http. Le destinataire final est soit le serveur d'origine, soit le premier serveur à recevoir une valeur Max-Forwards de 0 dans la requête.
La syntaxe de la méthode HTTP TRACE est la suivante :
TRACE /path HTTP/1.1
Host: example.com
La requête n'a pas de corps, et le chemin est l'URI de la ressource cible. La requête peut inclure un en-tête Max-Forwards, qui indique le nombre maximal d'intermédiaires pouvant transférer la requête. Si la valeur Max-Forwards est 0, la requête ne doit pas être transférée et la réponse doit être générée par le premier serveur qui la reçoit. Si la valeur Max-Forwards n'est pas spécifiée, la requête peut être transférée indéfiniment, jusqu'à ce qu'elle atteigne le serveur d'origine ou un intermédiaire qui ne prend pas en charge la méthode HTTP TRACE.
La réponse à la requête HTTP TRACE doit avoir un code d'état de 200 (OK) et un Content-Type de message/HTTP. Le corps de la réponse doit contenir le message exact qui a été reçu par le destinataire final, à l'exclusion de toute donnée sensible. La réponse peut également inclure un en-tête Via, qui indique les intermédiaires qui ont traité la requête. L'en-tête Via doit comporter une ou plusieurs entrées, chacune étant constituée du nom du protocole, de la version du protocole et de l'identifiant de l'intermédiaire. Par exemple :
HTTP/1.1 200 OK
Content-Type: message/http
Via: 1.1 proxy1.example.com, 1.1 proxy2.example.com
TRACE /path HTTP/1.1
Host: example.com
La réponse montre que la requête a été transférée par deux proxys, proxy1.example.com et proxy2.example.com, avant d'atteindre le destinataire final. Le corps de la réponse reflète la requête d'origine, y compris le chemin et l'en-tête Host.
Comment fonctionne la méthode HTTP TRACE ?
La méthode HTTP TRACE fonctionne en envoyant une requête à la ressource cible et en s'attendant à une réponse qui contient le même message de requête. Cela permet au client de voir le message exact qui a été reçu par le serveur et de vérifier s'il y a eu des modifications ou des erreurs en cours de route.
La méthode HTTP TRACE peut être utilisée pour déboguer divers aspects du comportement de l'API, tels que :
- La présence et l'identité d'intermédiaires, tels que des proxys, des passerelles ou des pare-feu, qui peuvent affecter la requête et la réponse de l'API. L'en-tête Via peut révéler les intermédiaires qui ont traité la requête et leurs versions de protocole.
- L'intégrité et la validité des en-têtes et du corps de la requête et de la réponse de l'API. Le corps de la réponse peut afficher le message exact qui a été reçu par le serveur, et le client peut le comparer à la requête d'origine pour voir s'il y a eu des changements ou des divergences.
- Les performances et la latence de la requête et de la réponse de l'API. Le client peut mesurer le temps qu'il faut pour envoyer la requête et recevoir la réponse et identifier les goulots d'étranglement ou les retards dans le chemin de l'API.
La méthode HTTP TRACE peut également être utilisée pour tester la sécurité et la conformité de l'API, telles que :
- La protection des données sensibles, telles que les cookies, les informations d'identification ou les jetons, qui peuvent être inclus dans la requête et la réponse de l'API. Le serveur ne doit pas refléter les champs susceptibles de contenir des données sensibles, et le client ne doit pas envoyer de contenu dans la requête, ni générer de champs susceptibles d'inclure des données sensibles.
- La prise en charge et l'application de la méthode HTTP TRACE par le serveur et les intermédiaires. Le serveur et les intermédiaires doivent se conformer à la spécification RFC 2616 et répondre avec un code d'état 200 (OK) et un type de contenu message/http. Si le serveur ou un intermédiaire ne prend pas en charge la méthode HTTP TRACE, il doit répondre avec un code d'état 405 (Méthode non autorisée) et un en-tête Allow qui répertorie les méthodes prises en charge. Si le serveur ou un intermédiaire n'autorise pas la méthode HTTP TRACE, il doit répondre avec un code d'état 403 (Interdit).

Quels sont les avantages de la méthode HTTP TRACE ?
La méthode HTTP TRACE offre plusieurs avantages aux développeurs, testeurs et consommateurs d'API, tels que :
- C'est un moyen simple et standard de déboguer les API, sans nécessiter d'outils ou de bibliothèques supplémentaires. Elle est prise en charge par la plupart des serveurs et clients HTTP, et elle suit la spécification RFC 2616.
- C'est une méthode sûre et idempotente, ce qui signifie qu'elle ne modifie pas l'état du serveur ou de la ressource, et qu'elle peut être répétée sans aucun effet secondaire. Elle n'est pas non plus cachable, ce qui signifie qu'elle reflète toujours l'état actuel de l'API.
- C'est une méthode puissante et polyvalente, ce qui signifie qu'elle peut être utilisée pour déboguer divers aspects du comportement de l'API, tels que les intermédiaires, les en-têtes, le corps, les performances, la latence, la sécurité et la conformité. Elle peut également être utilisée pour tester différents scénarios et cas d'utilisation, en variant le chemin, l'hôte, Max-Forwards et d'autres en-têtes.
Comment utiliser Apidog pour envoyer et analyser les requêtes HTTP TRACE ?
Apidog est une plateforme intégrée pour la conception, le débogage, le développement, la simulation et les tests d'API, qui combine Postman + Swagger + Mock + JMeter pour s'attaquer au problème de la synchronisation des données entre différents systèmes à l'aide d'un ensemble de systèmes et d'un ensemble de données. Apidog est un ensemble complet d'outils qui connecte l'ensemble du cycle de vie de l'API, aidant les équipes de R&D à mettre en œuvre les meilleures pratiques pour le développement API Design-first.
Apidog offre un moyen pratique et facile d'envoyer et d'analyser les requêtes HTTP TRACE, ainsi que d'autres méthodes HTTP. Pour utiliser Apidog pour envoyer et analyser les requêtes HTTP TRACE, vous devez suivre ces étapes :
- Créez une nouvelle requête, ou ouvrez-en une existante, où vous souhaitez envoyer et analyser vos requêtes HTTP TRACE.

- Dans l'éditeur d'API, sélectionnez la méthode TRACE dans le menu déroulant et entrez le chemin de la ressource cible. Vous pouvez également entrer les en-têtes Host et Max-Forwards, si nécessaire.

- Cliquez sur le bouton Envoyer pour envoyer la requête HTTP TRACE à la ressource cible et attendez la réponse.

Dans le panneau de réponse, vous pouvez voir le statut
Comment activer ou désactiver la méthode HTTP TRACE sur le serveur ?
Selon la configuration de votre serveur et votre politique de sécurité, vous souhaiterez peut-être activer ou désactiver la méthode HTTP TRACE sur votre serveur. L'activation de la méthode HTTP TRACE vous permet de déboguer plus facilement vos API, mais elle peut également exposer certaines informations qui pourraient être exploitées par des acteurs malveillants. La désactivation de la méthode HTTP TRACE empêche de telles attaques, mais elle limite également vos capacités de débogage.
Le processus d'activation ou de désactivation de la méthode HTTP TRACE varie en fonction du type et de la version de votre serveur. Voici quelques exemples de la façon de procéder pour certains serveurs courants :
- Apache : vous pouvez utiliser la directive TraceEnable dans le fichier httpd.conf pour désactiver ou limiter la méthode TRACE. Par exemple, pour désactiver complètement la méthode TRACE, vous pouvez ajouter la ligne suivante :
TraceEnable off
Pour limiter la méthode TRACE au seul serveur local, vous pouvez ajouter la ligne suivante :
TraceEnable extended
- Nginx : vous pouvez utiliser la directive limit_except dans le fichier nginx.conf pour désactiver ou limiter la méthode TRACE. Par exemple, pour désactiver complètement la méthode TRACE, vous pouvez ajouter le bloc suivant :
location / {
limit_except GET POST HEAD {
deny all;
}
}
Pour limiter la méthode TRACE au seul serveur local, vous pouvez ajouter le bloc suivant :
location / {
limit_except GET POST HEAD TRACE {
deny all;
}
if ($request_method = TRACE) {
return 200;
}
}
Conclusion
La méthode HTTP TRACE est un outil de débogage utile pour les API, qui vous permet d'effectuer un test de bouclage de message le long du chemin vers la ressource cible. Elle peut vous aider à vérifier la présence et l'identité des intermédiaires, l'intégrité et la validité des en-têtes et des corps, les performances et la latence des requêtes et des réponses, ainsi que la sécurité et la conformité de vos API.
Pour utiliser la méthode HTTP TRACE, vous devez envoyer une requête à la ressource cible et vous attendre à une réponse qui reflète le même message de requête, à l'exclusion de toute donnée sensible. Vous pouvez utiliser divers outils et frameworks pour envoyer et analyser les requêtes HTTP TRACE, tels que Apidog. Apidog offre un moyen pratique et facile d'envoyer et d'analyser les requêtes HTTP TRACE.