Я пытаюсь внедрить логин OAUTH через Facebook в моем приложении Nodejs/Angular/Express/Passport, но я боюсь с ним.CORS - Facebook - Паспорт
я все еще получаю ошибку CORS:
XMLHttpRequest заблокированный политикой CORS: 'Access-Control-Allow-Origin:' Нет заголовка присутствует на запрошенный ресурс. Origin 'https://www.xxxxxx.net', следовательно, не допускается.
Хотя я уже добавил к моему EXPRESS роутера:
router.all('/*', function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
if ('OPTIONS' === req.method) {
res.send(200);
}
else {
next();
}
});
В консоли разработчика я могу видеть, что заголовок для "OAuth/Facebook" GET вызова добавляет «Access-Control-Allow-Origin ' и так далее.
В обратном вызове нет «Access-Control-Allow-Origin» и т. Д. - это правильно?
router.get('/oauth/facebook/',passport.authenticate('facebook',{
failureRedirect: '/info',
scope:['email']
}));
router.get('/oauth/facebook/callback/', passport.authenticate('facebook',{
failureRedirect: '/info',
successRedirect: '/',
scope:['email']
}),
function(req,res){
if(req.user){
return res.json({token: req.user.generateJWT()});
} else {
return res.status(400).json({message:"Not found"});
}
});
Я думаю, что токены доступа отправляются через заголовок 'Authorization'; поэтому вы также должны предоставить его в заголовках: 'res.header ('Access-Control-Allow-Headers', 'Authorization, Content-Type');' Обычно для успешного запроса всегда учитывайте следующие заголовки: 'res. заголовок ('Access-Control-Allow-Headers', 'Authorization, Origin, X-Requested-With, Content-Type, Accept'); ' – dNitro
Спасибо за ваш ответ - но все та же ошибка:/ – fdddk23
Вы не можете загрузить диалоговое окно входа FB через AJAX. Вы должны вызвать его непосредственно в экземпляре верхнего окна (по той очевидной причине, что пользователи должны иметь возможность проверять через адресную строку, что они действительно входят в систему Facebook, а не на фишинговом сайте.) – CBroe