C'est moi qui documente publiquement mon erreur pour que si je refais la même, ou si quelqu'un d'autre la refait, il ne perde pas 3 heures à se tirer les cheveux pour résoudre un problème aussi simple.
Contexte
Je faisais une requête HTTP d'une application C# MVC ASP.NET vers une autre. Les applications nécessitent une connexion HTTPS, et nous utilisons URLRewrite pour rediriger une requête HTTP vers une URL HTTPS.
Une application envoyait une requête POST avec des données JSON dans le corps, assez classique. L'autre application était configurée pour recevoir ces données avec une classe de contrôleur MVC (méthodes CollectionAction et Insert pour GET et POST respectivement).
Symptômes du problème
L'application receveuse exécutait la méthode GET (CollectionAction) au lieu de l'action POST (ItemAction). La raison de cela était que la requête entrante dans l'application était en fait une requête GET, et en plus les données JSON manquaient.
J'ai envoyé l'en-tête "x-http-method" pour remplacer la méthode de requête de GET à POST (j'avais déjà défini la méthode de requête en POST mais cela était ignoré). Cela a fonctionné mais je n'avais toujours pas de données envoyées.
Donc maintenant je suis bloqué à me tirer les cheveux, car je vois une requête POST avec une longueur de contenu et des données envoyées et j'ai une requête GET sans données ni longueur de contenu entrantes (mais les en-têtes étaient préservés).