由于CORS而无法从nodejs / express获取数据

时间:2015-08-20 23:50:00

标签: angularjs node.js mongodb express passport.js

解决方案: Trouble with getting data from nodejs/express because of CORS

因为CORS,我从nodejs / express获取数据时遇到问题。

我收到类似这样的错误(抱歉,我用谷歌翻译错误):

  

来自外部来源的查询被阻止:一个政策来源禁止在http://localhost:8080/api/login上读取远程资源。 (原因:无法查询CORS)。

我尝试使用角度 $ http.post 发送查询

$http.post($rootScope.api + 'login', {
    email: form.email.$viewValue,
    password: form.password.$viewValue
}).then(function(data) {
    console.log(data.data);
});

这是我的服务器代码(我剪了一些代码,因为我认为这并不重要):

/* some nodejs requires */
var cors = require('express-cors');

mongoose.connect('mongodb://localhost:27017/batarindashboard');

require('./config/passport')(passport);

/* some express settings */
app.use(cors({
    allowedOrigins: [
        'localhost:*', '127.0.0.1:*'
    ]
}));

var port = process.env.PORT || 8080;

var router = express.Router();

router.use(function(req, res, next) {
    console.log('Something is happening');
    next();
});

/* sign up api */

router.post('/login', passport.authenticate('local-login', {
    failureRedirect : '/api/passport_message',
    failureFlash : true
}), function(req, res) {
    res.json({
        'message': 'You successfully signed in!'
    });
});

/* passport_message api */

/* is_logged_in api */

/* logout api */

app.use('/api', router);

app.listen(port);
console.log('Magic happens on port ' + port);

护照文件(也许问题在这里。为什么不呢?)

var LocalStrategy = require('passport-local').Strategy;
var User = require('./../app/models/user');

module.exports = function(passport) {
    /* some serialize deserialize code */

    /* sign up strategy */

    passport.use('local-login', new LocalStrategy({
        usernameField: 'email',
        passwordField: 'password',
        passReqToCallback: true
    }, function(req, email, password, done) {
        User.findOne({
            'local.email':email
        }, function(err, user) {
            if(err) return done(err);

            if(!user) {
                return done(null, false, req.flash('message', 'No user found.'));
            }

            if(!user.validPassword(password)) {
                return done(null, false, req.flash('message', 'Oops! Wrong password.'));
            }

            return done(null, user);
        })
    }))
};

0 个答案:

没有答案