Si vous utilisez une application frontale qui fait une demande à une API dorsale, vous devez inclure certains en-têtes dans le serveur API si ce dernier fonctionne sur un port différent.
Par exemple, si vous servez une application ReactJS avec webpack en mode développement, webpack agit comme un serveur, envoyant l'application reactJS au client. Ensuite, l'envoi de requêtes au serveur d'API nécessitera que ce dernier, exécuté sur un port différent, inclue des en-têtes Access-Control-Allow-Origin dans toutes les réponses http.
Fondamentalement, avant de générer chaque réponse, vous devez définir 'Access-Control-Allow-Origin'
a localhost:<port you visit in the browser>
.
Dans une application express basique, vous pouvez coller ceci dans votre app.js
par exemple :
app.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', 'http://localhost:3001');
res.header(
'Access-Control-Allow-Headers',
'Origin, X-Requested-With, Content-Type, Accept'
);
next();
});
Remarque : Si vous devez modifier http://localhost:3001
pour correspondre au port que vous visitez dans le navigateur.
EDIT : OP n'utilise pas express, mais utilise Webpack. La question est : quelle est une solution agnostique à express ?
Réponse : La solution est toujours la même : quel que soit le serveur API que vous utilisez, il suffit de définir les en-têtes de réponse pour chaque réponse.
Il existe cependant une autre solution qui fait appel à Webpack :
Dans le package.json
de votre code frontal qui est servi par webpack, ajoutez ce qui suit : "proxy" :"http://localhost:<port API server is running on>"
Par exemple, si webpack sert votre application frontale à localhost:3000
et votre serveur api fonctionne sur localhost:3001
alors le mandataire dans package.json
serait :
"proxy":"http://localhost:3001"