在Postman中将token放在header中,在Angular中如何写?

已解决,答案在下面.

一.Postman中,访问成功:
image

二.Angular中 header设置错误:

描述: 第一次请求返回 token 后,第二次请求应该将 token 加在什么位置 ?

 getInfo(): Observable<any> {

const httpThis = this;
const headers = new HttpHeaders().set('Content-Type', 'application/json')
.set('Content-Type', 'application/x-www-form-urlencoded');

const body = '<tsRequest>' +
'<credentials name="admin" password="abc1#@365" >' +
'<site contentUrl=""/>' +
'</credentials>' +
'</tsRequest>';

const hdr = { headers };
return httpThis.http.post(this.uri_tableau + 'api/3.8/auth/signin', body, hdr)
.pipe(map(
(res: {credentials: Token}) => {
return res.credentials.token;
res.credentials.token);    // 拿到 token
}),

mergeMap((tokenRes: string) => {
headers.append('X-Tableau-Auth', tokenRes) //此处如何设置?
console.log(tokenRes)
return httpThis.http.get(this.uri_tableau + 'api/3.9/sites', hdr)
.pipe(map(
(sitesRes: {sites: SitesId}) => {
console.log(sitesRes.sites)
}

))

})

);

}   

报错如下(跨域问题已经解决):

image

阅读 3.9k
3 个回答

使用append之后会生成一个新的header对象,如果没重新赋值,那么使用的还是之前那个

报什么错?没设置进去还是?

image.png

service里面处理吧

image.png

正确答案:

HttpHeader 是一个不可变数据,想要使用append,必须是链式调用!

const headersSEC = new HttpHeaders().append('X-Tableau-Auth', tokenRes).append('Accept', 'application/json')

还需要多学习啊!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进