如何在Angular中正确添加Headers?
How to properly add Headers in Angular?
这里是Angular中的服务代码:
getcareer(dataout:any){
let headers = new HttpHeaders().append('Content-Type', 'application/json').append('Authorization','Bearer'+' '+GlobalService.authtoken);
//headers = headers.append('Content-Type', 'application/json').append('Authorization','Bearer'+' '+GlobalService.authtoken);
//let headers={'Authorization':'Bearer'+' '+GlobalService.authtoken}
console.log(headers);
return this.http.post('http://localhost:3000/employee/getcareer',
{'headers': headers })
.subscribe(data => {
dataout = data});
}
现在登录并尝试访问此页面后,显示 401,未经授权。在浏览器控制台中,headers 被添加到 LazyUpdate 部分而不是 headers 部分。我试过 .set
.append
和其他一些方法,但没有成功。请看一下,谢谢。
编辑:
这是浏览器中的详细控制台(我在控制台日志中打印了 httpheaders):
以上是图片的 link(很抱歉,在此处发布图片时出现问题)。您可以看到 Headers 不存在于 'header' 部分中,而是存在于 'lazyupdate' 部分中。
试试这样:
const options = {
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + GlobalService.authtoken
}
};
this.http.post('http://localhost:3000/employee/getcareer', options)
从POST doc可以看出,第二个参数是数据:
/** POST: add a new hero to the database */
addHero(hero: Hero): Observable<Hero> {
return this.http.post<Hero>(this.heroesUrl, hero, httpOptions)
.pipe(
catchError(this.handleError('addHero', hero))
);
}
所以在你的情况下,你必须:
getcareer(dataout:any){
const headers = new HttpHeaders().append('Content-Type', 'application/json').append('Authorization','Bearer'+' '+GlobalService.authtoken);
console.log(headers);
return this.http.post('http://localhost:3000/employee/getcareer',
null,
{headers }) //unncessary key-value
.subscribe(data => dataout = data);
}
我发现了问题。问题是您必须为 POST 请求和 GET 请求以不同方式传递 headers。通常我已经找到了我假设的 GET 请求的解决方案。
对于 POST 请求,我在网上和此处找到了解决方案:
const headers = { 'Authorization': 'Bearer '+GlobalService.authtoken, 'Content-Type': 'application/json' };
return this.http.post('http://localhost:3000/employee/getcareer/',body,{headers}).subscribe(data => {
this.dataout = data});
所以在 URL 之后,body 收到 POST 请求,然后是 headers。如果没有 body 则留下 null
然后放 headers。在 GET 请求中,没有 body 出现,headers 紧跟在 URL.
之后
这里是Angular中的服务代码:
getcareer(dataout:any){
let headers = new HttpHeaders().append('Content-Type', 'application/json').append('Authorization','Bearer'+' '+GlobalService.authtoken);
//headers = headers.append('Content-Type', 'application/json').append('Authorization','Bearer'+' '+GlobalService.authtoken);
//let headers={'Authorization':'Bearer'+' '+GlobalService.authtoken}
console.log(headers);
return this.http.post('http://localhost:3000/employee/getcareer',
{'headers': headers })
.subscribe(data => {
dataout = data});
}
现在登录并尝试访问此页面后,显示 401,未经授权。在浏览器控制台中,headers 被添加到 LazyUpdate 部分而不是 headers 部分。我试过 .set
.append
和其他一些方法,但没有成功。请看一下,谢谢。
编辑: 这是浏览器中的详细控制台(我在控制台日志中打印了 httpheaders):
以上是图片的 link(很抱歉,在此处发布图片时出现问题)。您可以看到 Headers 不存在于 'header' 部分中,而是存在于 'lazyupdate' 部分中。
试试这样:
const options = {
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + GlobalService.authtoken
}
};
this.http.post('http://localhost:3000/employee/getcareer', options)
从POST doc可以看出,第二个参数是数据:
/** POST: add a new hero to the database */
addHero(hero: Hero): Observable<Hero> {
return this.http.post<Hero>(this.heroesUrl, hero, httpOptions)
.pipe(
catchError(this.handleError('addHero', hero))
);
}
所以在你的情况下,你必须:
getcareer(dataout:any){
const headers = new HttpHeaders().append('Content-Type', 'application/json').append('Authorization','Bearer'+' '+GlobalService.authtoken);
console.log(headers);
return this.http.post('http://localhost:3000/employee/getcareer',
null,
{headers }) //unncessary key-value
.subscribe(data => dataout = data);
}
我发现了问题。问题是您必须为 POST 请求和 GET 请求以不同方式传递 headers。通常我已经找到了我假设的 GET 请求的解决方案。 对于 POST 请求,我在网上和此处找到了解决方案:
const headers = { 'Authorization': 'Bearer '+GlobalService.authtoken, 'Content-Type': 'application/json' };
return this.http.post('http://localhost:3000/employee/getcareer/',body,{headers}).subscribe(data => {
this.dataout = data});
所以在 URL 之后,body 收到 POST 请求,然后是 headers。如果没有 body 则留下 null
然后放 headers。在 GET 请求中,没有 body 出现,headers 紧跟在 URL.