gpt4 book ai didi

node.js - Angular HTTP 请求中的 NodeJS API header

转载 作者:太空宇宙 更新时间:2023-11-04 00:15:40 25 4
gpt4 key购买 nike

我无法使用 Angular 应用程序发送 HTTPs 请求中的 header 。我必须发送一个 token 来授权后端的请求,即 NodeJS API。每条路线都会被检查。

当我打印请求 header 时:

host: 'localhost:21124',
connection: 'keep-alive',
'access-control-request-method': 'GET',
origin: 'http://localhost:4200',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36',
'access-control-request-headers': 'authorization,content-type',
accept: '*/*',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'pt,en-US;q=0.9,en;q=0.8' }

我使用“授权”控制 header 来发送我的 token 。
这是我的 CORS 和验证 (API):

app.use(helmet());
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
app.use(function (req, res, next) {
if (req.url !== '/login') {
var token = req.headers['Authorization'];
if (!token) {
res.status(401).send('Token não provido!')
} else {
jwt.verify(token, SECRET, function(err, decoded) {
if (err) {
res.status(500).send('Token inválido!');
} else if (decoded) {
var date = new Date();
if (decoded.exp < date.getTime()) {
next();
} else {
res.status(500).send('Token inválido!');
}
}
});
}
} else {
next();
}
});

这是我的 Angular API 服务,我在其中执行请求(例如一个请求):

getAssociados(idClube: string): any {
const token = localStorage.getItem('token');
const headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': token });
const options = new RequestOptions({ headers: headers });
return this.http.get(this.associadoUrl + idClube, options)
.map(res => res.json());

}

我已经使用 Postman 来完成请求。一切都很好。我的 Angular 应用程序出现错误(未经授权)。

最佳答案

根据discussion of cross-origin ,如果您发送

Access-Control-Allow-Origin: *

那么就不会发送任何授权信息。您需要更改您的 Node.js 应用程序以发送一个 access-control-allow-origin header ,该 header 明确提及您获得的 origin header 。

此外,请注意,options 预检请求将不包含 authorization header ;仅在浏览器验证跨域请求后发送。

关于node.js - Angular HTTP 请求中的 NodeJS API header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47182176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com