Flask, Vuejs et CORS

Hello la Zone,

Je dois dire que vous êtes mon dernier espoir.

J’ai un problème de communication entre une API et un Frontend qui m’arrache les cheveux (et j’en ai plus beaucoup).

Voila le truc:
l’API est en python avec flask et tourne sur domaine1.fr:5500
Le front est en vuejs des plus classique et tourne sur domaine1.fr:8080

En local : aucun problème
Depuis ma connexion 4G : aucun problème
Depuis le VPN de mon boulot : aucun problème
Depuis le reseau interne (wifi comme cable) de mon boulot j’obtiens un beau « Blocage d’une requete multi-origines (Cross-Origin Request) la politique Same Origin ne permet pas de consulter la ressource… »

Une idée du pourquoi du comment ? Je ne comprend pas la difference de comportement en fonction de la connexion et surtout, je ne vois pas comment faire pour corriger cela.

Alors j’y connais rien en Python Flask, mais j’ai dû faire un truc dans l’idée en C#.
J’imagine que ton réseau boulot doit intercepter la requête du front vers le back et que c’est ça que ton back n’aime pas (en gros il te dit houla la requête vient de superproxy.org:8080 alors que je m’attends à l’avoir de domaine1.fr:8080).

Après un rapide googlage : enable cross-origin resource sharing devrait t’aider.

Malheureusement, non. J’ai déjà configuré CORS pour accepter tout ça. Cest pour ça que ça marche dans les autres cas.

Je vais creuser le proxy mais sans conviction.

Si tu as un proxy en inerne, verifie bien les parametres de X-Forward & co (de tête), (s’il paume les infos du domaine d’appel il va te balancer cette erreur)

Sinon au pire tu config un accept * sur ta config CORS et dans les logs de ton serveur http tu choppes le domaine modifié et tu l’ajoutes à domaine1.fr dans la config d’origine de tes CORS. Crade j’avoue :wink:

@Donjohn Je vais regarder ca.

Alors par contre, depuis reqbin.com, je communique bien avec le back. Je penche donc de plus en plus pour un problème de configuration de vuejs… ce que je comprend encore moins. Dans ma tete, CORS etait un probème de serveur, pas de client.

et tu as regardé cela ? (il me semble avoir vu ça récemment dans mon dév, mais je l’avais pas forcément corrigé de façon orthodoxe )

edit:
Je ne me souviens plus si j’avais vu ce souci quand j’ai mis Flask en reverse proxy sur apache et/ou quand j’ai fait certains appels ajax particuliers.

Est ce que tu peux copier les headers de la requête mère et de la requête qui bloque ?

Bon, j’ai trouvé… ou plutôt la DSI a trouvé pour moi. Tout ce qui passe par le port 5500 est interceptés et routés vers un autre serveur. Bien sur, la DSI ne communique pas les ports libres sinon ca serait trop facile.

Bref un changement de port pour mon API et tout marche :slight_smile:

5 « J'aime »