请求与 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);
您应该验证您的假设:只需打开浏览器开发工具的网络面板,然后检查您发送的内容是否是您认为发送的内容。
这是我的 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);
您应该验证您的假设:只需打开浏览器开发工具的网络面板,然后检查您发送的内容是否是您认为发送的内容。