datagouv / data.gouv.fr

Ce dépôt rassemble les tickets techniques qui portent sur data.gouv.fr.
https://www.data.gouv.fr
76 stars 14 forks source link

[Swagger front] Certains Swaggers ne sont pas accessibles côté client #1595

Open nicolaskempf57 opened 1 day ago

nicolaskempf57 commented 1 day ago

Description du bug

Les fichiers OpenAPI des API sont téléchargés côté client et affiché via SwaggerUI dans udata-front.

Cela pose problème pour les URLs qui n'autorisent pas les requêtes d'autres noms de domaine (CORS).

Exemples :

Il est possible de gérer le problème au niveau de la configuration des serveurs pour les cas des API gérées en interne mais cela semble plus fastidieux pour les API d'autres institutions.

Comment reproduire le bug

Étapes à suivre pour faire apparaître le bug :

  1. Aller à https://www.data.gouv.fr/fr/dataservices/api-gels-des-avoirs/
  2. Cliquer sur Swagger
  3. Constater le bug

Comportement attendu

Afin d'avoir accès aux fichiers OpenAPI depuis le navigateur, il faut forcément qu'ils disposent des bonnes en-têtes CORS.

Si l'on veut contourner ce problème, il faut soit mettre en place un proxy de notre côté qui récupère à la demande le fichier OpenAPI, soit stocker les fichiers chez nous.

rv2931 commented 23 hours ago

A tout hasard https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS ? Normalement le serveurs peut fournir la liste des origins qu'il autorise lui même et le client est censé les accepter

nicolaskempf57 commented 23 hours ago

Oui c'est ça, mais les URLs fournies proviennent de serveurs qui sont gérés par les utilisateurs de data.gouv.fr et non sur nos serveurs directement.

rv2931 commented 22 hours ago

Et si côté serveur on détecte (ou sinon a stocké l'info a moment de l'enregistrement/moissonage) qu'on va répondre une ressource/lien qui est située sur un domain différent. Y a pas moyen d'ajouter le header adéquat à la volée pour fournir l'info au client ?

nicolaskempf57 commented 22 hours ago

On peut faire ça si la requête du fichier OpenAPI est effectué du client vers notre serveur, qui lui ensuite fait la requête du fichier original vers le serveur externe.

Sent from Proton Mail for iOS

Le mer. 4 déc. 2024 à 12:35, rv2931 @.***(mailto:Le mer. 4 déc. 2024 à 12:35, rv2931 < a écrit :

Et si côté serveur on détecte (ou sinon a stocké l'info a moment de l'enregistrement/moissonage) qu'on va répondre une ressource/lien qui est située sur un domain différent. Y a pas moyen d'ajouter le header adéquat à la volée pour fournir l'info au client ?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>