Je viens de tester votre exemple de commande curl en local et il fonctionne parfaitement de mon côté, donc la syntaxe est correcte. Serait-il possible que le proxy supprime certains en-têtes ? Cela pourrait expliquer pourquoi vous rencontrez des erreurs CSRF INVALID, car il ne peut plus lire ou accéder aux identifiants de l’API.
Notre proxy est entièrement personnalisé, développé en interne, et constitue la première couche face au public.
Je suis connecté via VPN à notre réseau interne et je ne touche pas l’URL publique, mais l’URL du backend (derrière le proxy). Par conséquent, les requêtes ne devraient pas passer par le proxy.
Notre instance Discourse de staging est en version 2.3.10.
L’API se comporte-t-elle différemment sur cette version ?
Non, la version 2.3.10 contient toujours tout le système d’authentification basé sur les en-têtes, donc son comportement ne devrait pas être différent.
Vous tombez sur cette ligne :
ce qui signifie que votre requête est malformée d’une manière ou d’une autre et qu’il n’est pas possible de détecter qu’il s’agit d’une requête API.
Comme il s’agit d’une instance de préproduction et non d’un environnement local, nginx ou un autre serveur web sera exécuté avant que les requêtes n’atteignent Discourse. Il est possible que nginx supprime certains en-têtes en fonction de votre configuration. Cela peut apparaître dans les journaux de nginx.
Voici la ligne où les identifiants API sont lus à partir des en-têtes de la requête. Vous pouvez également ajouter des instructions de débogage dans ce fichier pour vérifier si les en-têtes parviennent jusque-là.