Нет заголовка при добавлении логики - Angular 7 - PullRequest
0 голосов
/ 08 марта 2019

У меня есть этот код:

app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Methods', 'PUT, GET, DELETE, POST, OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Origin, Accept, Content-Type, Authorization, X-Requested-With'); //
  next();
});
app.use((req, res, next) => {   
  console.log(req.headers.authorization);
  next(); 
});

Я делаю запрос как этот

this.httpClient
  .get<any>('url', {
    headers: new HttpHeaders().set('Authorization', 'Bearer token')
  })
  .subscribe(x => {

  });

И все прекрасно работает.

Консоль: 'Носительтокен '

, но если я добавлю некоторую логику, например:

app.use((req, res, next) => {   
  console.log(req.headers.authorization);

  //LOGIC
  if (!req.headers.authorization) {
    res.status(401).json({ message: 'NoAuthorization' });
    return;
  }

  next(); 
});

Внезапно

console.log (req.headers.authorization);undefined

и

enter image description here

ПОЧЕМУ ????

1 Ответ

1 голос
/ 08 марта 2019

Было действительно трудно определить ошибку ...

Но я нашел это ...

проблема заключалась в том, что на каждый запрос я получаю два, из-за запроса перед полетом с методом OPTIONS при создании запроса на отправку из разных источников.

так что я добавил

app.use((req, res, next) => { 
   res.header('Access-Control-Allow-Origin', '*');   
   res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');  
   res.header('Access-Control-Allow-Headers', 'Origin, Accept, Content-Type, Authorization, X-Requested-With');

   //END when options... so the request can continue.
   if (req.method === 'OPTIONS') {
      return res.status(200).end();   
   }
   next(); 
});

или, если предпочтительнее, выразить поддержку приложения. СПОСОБ, включая опции ... так что вы можете

app.options("/*", function(req, res, next){
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Origin, Accept, Content-Type, Authorization, X-Requested-With');
  res.send(200);
});

теперь работает нормально! ...

(многие часы ищут эту проблему.)

Есть ли лучшее решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...