Problème d'accès aux API Discourse depuis une application React

L’accès à fetch à l’adresse ‘https://boostfloral.discourse.group/categories.json?’ depuis l’origine ‘http://localhost:3000’ a été bloqué par la politique CORS : le champ d’en-tête de requête API-key n’est pas autorisé par Access-Control-Allow-Headers dans la réponse preflight.

J’obtiens le problème ci-dessus lorsque j’essaie d’appeler les API de Discourse. J’ai déjà ajouté un certificat SSL à mes serveurs. J’ajoute les options CORS présentes sur mon panneau d’administration, mais j’obtiens toujours ce problème.

Quelqu’un a-t-il déjà rencontré quelque chose de similaire et pourrait m’aider à trouver une solution ???

Est-ce une clé API utilisateur ? Si je ne me trompe pas, cela devrait être User-Api-Key.

J’obtiens maintenant la réponse ci-dessous.

L’accès à fetch à ‘https://boostfloral.discourse.group/latest.json?order=default&ascending=false’ depuis l’origine ‘http://localhost:3000’ a été bloqué par la politique CORS : Le champ d’en-tête de requête api-username n’est pas autorisé par Access-Control-Allow-Headers dans la réponse preflight.

Si vous essayez d’utiliser l’API d’administration (par opposition à l’API utilisateur), les champs d’en-tête requis sont Api-Key et Api-Username.

Je pense que pour les clients Javascript publics, l’API d’administration n’est pas autorisée (malheureusement, cela complique tout, je sais !) Mais vous devrez utiliser User API keys specification à la place.

Pour moi, j’essaie encore de comprendre comment faire. Je veux juste récupérer une réponse .json qui est publiquement disponible.

Si c’est public, alors la configuration du CORS devrait suffire et vous n’aurez pas besoin de vous soucier des clés API.

2 « J'aime »

Oui, merci ! Cela a été résolu pour moi ici : Using JavaScript fetch to get publicly available page from Discourse into an external site (Discourse API) - #2 by pfaffman

@fahadaslam98 comme l’a dit @RGJ, si le CORS est correctement configuré, alors supprimer les clés API des en-têtes devrait fonctionner, :+1:

1 « J'aime »