blocked by CORS policy
Пытаюсь на свой сайт добавить функции "войти с помощью Google". Для этого использую библиотеку passport js.
Так выглядит мой код:
В самом начале я ставлю хедеры, чтобы разрешить fetch запросы на другие домены
this.router.use(function(req, res, next) {
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Origin', req.headers.origin);
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept');
if ('OPTIONS' == req.method) {
res.send(200);
} else {
next();
}
});
далее уже использую стратегию для passport js и устанавливаю функции на запросы:
passport.use(new GoogleStrategy({
clientID: "my-id",
clientSecret: "my-secret",
callbackURL: "http://localhost:5000/api/Login/Advertiser/Google/callback"
},
function(accessToken, refreshToken, profile, cb) {
console.log(accessToken, refreshToken, profile, cb)
return cb(null, profile);
}
));
this.router.get('/api/Login/Advertiser/Google',
passport.authenticate('google', { scope: ['profile'] }));
this.router.get('/api/Login/Advertiser/Google/callback',
passport.authenticate('google', { failureRedirect: '/login' }),
function(req, res) {
console.log(req)
// Successful authentication, redirect home.
res.redirect('/');
}
);
И потом на клиенте, при нажатии на кнопку "войти через Google", я делаю fetch запрос вида:
static LoginGoogle = (callback) => {
Loader.activeLoader()
return fetch('/api/Login/Advertiser/Google', {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
}
}).then( response => {
Loader.stopLoader()
response.json().then((data) => {
callback(data)
})
})
}
НО когда я нажимаю на эту кнопку в консоле на клиенте выходит ошибка:
(делал все по докам passport js, кроме первого действия(с заголовками). У них его нет, но без заголовков тоже не работает).
(клиент на 3000 порту, сервер на 5000)
Как решить эту проблему?
