CORS avec Directus sur localhost

Bonjour à tous,

Je suis en train de développer un backoffice en flutter web, mais je rencontre un problème CORS.
J’ai créé mon serveur avec un fichier Docker.compose selon les recommandations de @mbritto
Sur mon serveur de production cela fonctionne bien avec CORS_ORIGIN, mais pour continuer à travailler, j’ai besoin de développer une version en localhost. Et c’est là que ça coince.
Impossible d’avoir accès à ma web app avec Chrome. J’ai toujours un refus CORS.
Quelqu’un saurait-il comment configurer le fichier Docker.compose pour que Chrome laisse passer mes requêtes sur localhost ?

J’espère avoir été suffisamment clair.

En vous remerciant.

Benoît

1 « J'aime »

Salut!

Le principe de CORS est que le serveur (ici ton directus) doit lister les domaines autorisés à lui demander des choses.

La propriété à utiliser est donnée ici normalement : https://docs.directus.io/self-hosted/config-options.html#cors

Je n’ai pas testé, mais je mettrais quelque chose comme ça (remplace 12345 par le port de ton serveur de test web) :

      CORS_ENABLED: 'true'
      CORS_ORIGIN: 'http://localhost:12345'

Tu peux même faire encore plus simple pour ton serveur de dev :

      CORS_ENABLED: 'true'
      CORS_ORIGIN: '*'

Attention, je te déconseille de laisser le * en production ; ça voudrait dire que tous les sites du monde auraient le droit de consommer les données de ton API directus.

1 « J'aime »

Bonjour @mbritto,

Merci pour ta réponse.
C’est bien comme tu me l’indiques que j’ai configuré mon fichier composé.yml. (Et bien entendu, cela sera changé pour la production, donc ajouté dans le fichier compose.override.yml)

   CORS_ENABLED: 'true'
   CORS_ORIGIN: '*'

Mais j’ai toujours l’erreur que je retrouve dans la console javaScript

Access to XMLHttpRequest at 'http://localhost/auth/login' from origin 'http://localhost:51842' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.

Impossible de faire tourner ma webapp sur mon Directus en localhost… :melting_face:

Je tourne en rond, et j’avoue ne plus trop avoir de pistes à explorer.

Si quelqu’un à une idée :bulb:

Bonjour,

Une lumière ce matin :bulb::bulb::bulb:
J’ai regardé dans mon projet flutter, et c’est de là que venait le problème :imp:
J’avais spécifié comme adresse pour mon directusApiManager « http://localhost » sans préciser le port.
En corrigeant en « http://localhost:8055 » tout fonctionne bien :relieved:
Si cette petite erreur peut éviter quelques moments d’énervement à d’autres.

Bien à vous.

1 « J'aime »

Content que tu aies trouvé la solution :+1:
Happy Coding!