В настоящее время мой 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);
});
'*' не должно быть вашим значением заголовка 'Access-Control-Allow-Origin'. Это поражает назначение функций безопасности браузеров. –