Olá,
Estou com um problema de Token entre o Angular 2 e o NodeJS.
A partir do Curso de MEAN, resolvi fazer um projeto, mas com Angular 2. E utilizei como base o tópico abaixo para implementar a solução de autenticação no client: https://cursos.alura.com.br/forum/topico-adicionando-token-em-toda-requisao-com-angular-2-solucao-27821
Porém, quando chamo minha rota de autenticação, o Node gera o token e responde pro client. No DevTools do Chrome eu consigo ver o Token no response. Mas no Angular, meu objeto headers é vazio.
return this.http
.post(this.url, JSON.stringify(login), {headers : headers})
.map((res) => {
let token = res.headers.get('x-access-token');
console.log('>>>>',res.headers); //OBJECT HEADERS COM MAP VAZIO
if (token) {
this._loggedIn.next(true);
localStorage.setItem('token', token);
}
});
Ao tentar obter o token, fica null.
Percebi que se eu der um build no meu Angular CLI para produção e colocar o dist gerado dentro do node, no diretório /public, o problema não ocorre e consigo me autenticar perfeitamente. O problema ocorre somente quando o Angular é uma ponta externa.
Tentei resolver o problema de CORS com o seguinte código no Express:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "http://localhost:4200");
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, X-XSRF-TOKEN, x-access-token, Authorization, Content-Type, Accept");
next();
});
Mas não resolveu. Alguma ideia?