![](/img/trans.png)
[英]Getting CROS Error even after adding header in node.js for Angular js
[英]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.