2016-10-11 6 views
2

В настоящее время мой front-end Angular2 работает на localhost:3000, а внутренний интерфейс NodeJS (на основе KrakenJS) работает на localhost:8000. Когда я кладу в учетных данных я называю this.http.post('http://localhost:8000/login', body, { headers: contentHeaders }) апи, но я получаю следующий ответ в Chrome:Angular2, NodeJS & Passport Issue

XMLHttpRequest cannot load http://localhost:8000/login. The request was redirected to 'http://localhost:8000/', which is disallowed for cross-origin requests that require preflight. 

Но когда я называю this.http.post('http://localhost:8000/register', body, { headers: contentHeaders }) все это прекрасно работает и делает все регистрации магии (хэширования PSWD, хранения деталей в базе данных ..).

Вот мой простой регистр API из (register.js):

router.post('/', function (req, res) { 

    if (req.body.email && req.body.password) { 
     var User = require('../../models/user'); 

     User.create({ 
      name: req.body.name, 
      email: req.body.email, 
      password: req.body.password 
     }).then(
      function() { 
       res.render('user/registered', {registered: true}); 
      }, 
      function() { 
       res.render('user/registered', {registered: false}); 
      } 
     ); 
    } else { 
     res.render('user/registered', {registered: false}); 
    } 
}); 

Вот Войти апи из (login.js):

router.post('/', function (req, res) { 

    passport.authenticate('local', { 
     successRedirect: req.session.goingTo || '/', 
     failureRedirect: '/login', 
     failureFlash: true 
    })(req, res); 

}); 

ответ

0

Включение CORS в основной файл сервера с:

app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 
+1

'*' не должно быть вашим значением заголовка 'Access-Control-Allow-Origin'. Это поражает назначение функций безопасности браузеров. –

Смежные вопросы