Angular 7 未按要求发送正确的 header

标签 angular http-headers jwt passport.js angular7

我无法在 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/

相关文章:

http - 考虑到以下可能性,最有效的 ETag 生成是什么?

HTTP响应;有效载荷的总大小

angular 2 http异常处理程序和jwt刷新

angular - 在 Spring Boot 中从 Angular 7 的请求接收空授权 header ,但 Postman 工作正常

angular - Ionic 2 - 在登录页面禁用侧面菜单

angular - ionic firebase - TypeError : Object(. ..) 不是 Firebase.getToken 的函数

javascript - 组合多个可管道化的 NgRx 选择器

angular - ngrx 效果 : Are actions dispatched by one effect processed immediately by other effects?

javascript - 如何使用 javascript 中的 http.post 将图像发送到服务器并在 mongodb 中存储 base64

java - Spring boot 中的安全属性