繁体   English   中英

添加逻辑时不获取标题-Angular 7

[英]No getting header when adding logic - Angular 7

我有以下代码:

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); 未定义

在此处输入图片说明

为什么????

确实很难发现错误...

但是我发现了...

问题在于,对于每个请求,我都会得到两个请求,这是因为在进行跨域请求时,使用方法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(); 
});

或者,如果需要,可以表达支持应用程序METHOD,包括选项...,以便您可以

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);
});

现在工作正常!...

(很多时间正在寻找这个问题。)

有更好的解决方案吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM