我无法在 Angular 7 中发送正确的标题! 我在后端使用 Passport :
"app.get('/api/users', passport.authenticate('jwt', {session: false}), (req, res, next) => {... bla bla bla...}."
当我尝试从 postman 向我的路径/api/用户发送有效 token 时,一切正常,但当我从 Angular 发送时却不行。 (* Angular 不显示错误!) 假设'Bearer validToken'是一个有效的 token 以这种方式我发送标题:
getAll() {
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'Bearer validToke.'
});
};
return this.http.get<user[]>(`http://localhost:3000/api/users`, httpOptions);
}
我可以从 Angular 进行身份验证并获取 Bearer token ,一切正常,如果我删除 passport.authenticate ('jwt', {session: false}) 我可以获得用户列表
感谢阅读!
最佳答案
一切对我来说似乎都是正确的——但我对你的代码做了一些小改动
不要绑定(bind)HttpOptions
直接绑定(bind)请求中的HttpHeaders
检查下面的代码
getAll() {
const httpHeaders = new HttpHeaders ({
'Content-Type': 'application/json',
'Authorization': 'Bearer validToke.'
});
return this.http.get<user[]>(`http://localhost:3000/api/users`, { headers: httpHeaders });
}
现在这将为请求添加您的 header - 如果您使用从不同域获取数据 - 尝试在您的服务器上添加 cors - 浏览器将预飞行请求作为 HttpOptions
和然后根据您的情况将其绑定(bind)为 HttpGet
希望它有效 - 编码愉快!!
关于Angular 7 未按要求发送正确的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53200399/