J’ai un problème avec la CORS avec mon application.
Ma stack est Node.js avec Express 4 et AngularJS avec Restangular
J’ai déjà essayé quelques choses ( par exemple ) mais je continue à obtenir:
XMLHttpRequest cannot load http://localhost:8080/api/users. Request header field Content-Type is not allowed by Access-Control-Allow-Headers.
Du côté du serveur, j’ai ces en-têtes:
app.all('/*', function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With"); res.header("Access-Control-Allow-Methods", "GET, POST","PUT"); next(); });
Dans la partie AngularJS, j’utilise ceci:
$httpProvider.defaults.useXDomain = true; delete $httpProvider.defaults.headers.common['X-Requested-With'];
Et je fais le post avec Restangular comme ceci:
var baseUsers = Restangular.all('users'); .... .... baseUsers.post(newUser).then(function(user){ console.log(user); });
Une dernière chose: sur le serveur Node.js, je console le req.method
et indique OPTIONS
. Je ne sais vraiment pas pourquoi.
Peut-être que c’est idiot, espérons que quelqu’un pourra m’aider.
Merci!
Changement –
res.header("Access-Control-Allow-Headers", "X-Requested-With");
À
res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type");
Source 1
Source 2
Je poste même réponse avec un code détaillé, parce que j’ai eu quelques problèmes quand j’utilise la réponse sélectionnée.
Il suffit de tirer le code ci-dessous après l’initialisation de l’object d’ app
app.all('/*', function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type"); res.header("Access-Control-Allow-Methods", "GET, POST","PUT"); next(); });
J’espère que cela sera un peu plus utile.