请求与 Postman 合作,但使用 Angular returns 401

Request working with Postman but with Angular returns 401

这是我的 angular 方法

getGiftList(url: string){
let q = this.baseUrl + url;
let headers = new HttpHeaders();
let authToken = 'Bearer ' + this.authService.currentUser.token;

console.log(q); //Log the url ...
console.log(authToken); Log the token ...

headers.set('Authorization', authToken)

return this.http.get(q, {
  observe: 'response' 
  ,headers: headers
})

}

这是Asp.net核心方法

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class GiftController : Controller
{
    [HttpGet("api/giftsByGiver/{email}")]        
    public IActionResult getGiftBasicRecordsByGiver(string email, int cpg = 1)
    {
       //
    }
}

当我从 angular 代码发出请求时,出现 401 错误。但是,当我 copy/peste 我登录到 Postman 和 运行 的相同值时,我得到了正确的结果。

我是不是漏掉了什么?

感谢您的帮助

HttpHeaders 不可变。调用 set() 不会改变它。它 returns HttpHeaders 的一个新实例。所以你需要

headers = headers.set('Authorization', authToken);

或者更简单,如果您更改指令的顺序:

const authToken = 'Bearer ' + this.authService.currentUser.token;
const headers = new HttpHeaders().set('Authorization', authToken);

您应该验证您的假设:只需打开浏览器开发工具的网络面板,然后检查您发送的内容是否是您认为发送的内容。