-
Fetch() et erreur CORS
Bonsoir à tous,
Rassurez-vous, ce n'est pas une enième question sur un problème CORS. Il semble que ce soit légèrement plus épineux...
Je vous explique :
Pour le compte d'un client, sur une mission de trois jours, l'idée est de développer un petit portail web qui récupère des données en GET pour lecture et en POST pour modification sur une API sur un serveur PRIVE sur un réseau PRIVE!
Jusque là, pas trop compliqué. Choix du langage libre, je pars sur du JS avec Alpine.js. Ca sert à rien de sortir l'artillerie lourde pour un truc comme ça.
Pour tester, le client me donne des "fake data", le retour présupposé de l'api. Le retour est un fichier xml...
Je plie le bordel easy et je l'envoie au client pour tester. Et oui, vu que c'est un réseau privé sur un serveur privé, je n'y ai pas accès donc je ne peux pas faire les tests en prod moi-même. (Le code est ici
Et là, la fameuse erreur CORS. (Je sais dorénavant en profondeur comment ça fonctionne, je vous rassure. J'ai étudié le bordel en profondeur.)
Après beaucoup de recherche, il se trouve que le serveur sur lequel se trouve cette fameuse API n'a pas de CORS policy, d'où l'impossibilité de faire une requête via JS dessus.
Du coup, ma question est :
Est-ce que vous connaissez une autre méthode pour effectuer des requêtes ? Ou si sans un changement sur le serveur (genre dans le htaccess ou dans les réponses de l'API mais ça c'est pas possible je crois)
Parce que, évidemment, je n'ai pas (encore) été payé et ça m'étonnerait que le client me paye, étant donné que ce n'est pas de ma faute (techniquement parlant ).
(Je précise que là, je cherche un autre moyen de réaliser le projet et pas de faire un procès à moi ou au client! Merci ! )
Merci à vous pour les éventuels solutions, je suis ouvert aux dialogues et aux questions...
-
si vous ne pouvez pas faire de modifications côté serveur, le fait d'utiliser un navigateur comme client HTTP refusera toujours d'analyser la réponse.
il faut donc changer le client HTTP qui envoie la requête.
si vous voulez garder la partie javascript qui lit la réponse, vous pouvez remplacer l'appel à fetch par un appel à un client qui sera codé côté serveur et c'est donc cet autre client qui enverra la requête HTTP sur le serveur privé.
il faudra donc que cet intermédiaire se trouve sur le réseau privé de votre client donc renseignez vous sur les serveurs déjà en place pour savoir quelles technologies utiliser.
-
Super, merci de la réponse, c'est bien ce qu'il me semblait...
Impossible d'installer quoi que ce soit sur le serveur ni sur le réseau privé. Il va falloir qu'il trouve une autre solution.
Le plus dur, ça va être de lui faire accepter.
Merci encore