J'ai généré une nouvelle application sails.js et créé une API de test comme suit.SailsJS - CORS - L'en-tête 'Access-Control-Allow-Origin' contient la valeur invalide ''
module.exports = {
test:function (req, res) {
return res.ok({success: true});
},
}
L'application sails
est hébergé dans une machine locale autonome avec au 192.168.3.208:1337
.
Ma configuration CORS
est la suivante.
module.exports.cors = {
origin: '*',
credentials: true,
};
Quand je fais un simple appel AJAX
de ma machine locale (192.168.3.210
) à l'API,
$.ajax({
type: 'GET',
url: 'http://192.168.3.208:1337/api/test',
dataType: 'json',
success: function(data) {
console.log(data);
},
failure: function(data) {
console.log(data);
}
});
je reçois l'erreur suivante
Impossible de charger http://192.168.3.208:1337/api/test: Le L'en-tête 'Access-Control-Allow-Origin' contient la valeur invalide ''. L'origine 'http://localhost' n'est donc pas autorisée.
La page html est hébergé par Apache sur le port 80.
Qu'est-ce que je manque ici?
Voir https://sailsjs.com/documentation/concepts/security/cors#?warning pour une explication des raisons pour lesquelles vous ne devriez pas essayer de combiner 'origine: « * '' avec 'credentials: true'. Je suppose que pendant le test, vous pouvez essayer de définir '' origin: 'http: // localhost /' 'et voir si cela fonctionne - et en production, changez cette valeur' origin' en quelle que soit l'origine réelle avec laquelle vous voulez autoriser les demandes. Vous voulez généralement éviter d'autoriser des demandes accréditées d'origine quelconque. – sideshowbarker
Ajoutez la configuration 'allRoutes: true,' à cors'. – MjZac