2017-10-18 12 views
0

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?

+1

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

+1

Ajoutez la configuration 'allRoutes: true,' à cors'. – MjZac

Répondre

1

Cette résolu le problème

module.exports.cors = { 
    origin: '*', // Required whitelist 
    credentials: true, 
    headers: ['Authorization', 'content-type', 'user-agent'] 
};