我发现了几个帖子,我发现我们可以使用以下代码在get请求中设置标头:
let headers = new Headers({ 'Accept': 'application/json' });
headers.append('Authorization', `Bearer ${token}`);
let options = new RequestOptions({ headers: headers });
return this._http
.get(this._url,options)
.map(res => console.log(res));
但是在我的API中,如果我正在做console.log(req.headers.authorization)
,我将得到未定义。请告诉我这里缺少的东西。
更新
const headers = new HttpHeaders()
.set("X-CustomHeader", "custom header value");
console.log(headers);
this.users = this.http
.get(
"https://reqres.in/api/users",
{headers})
.do(console.log)
.map(data => console.log(data));
在上面的代码中我得到如下所示的标题:
在Web API上,我得到标题:'access-control-request-headers': 'authorization'
。
问题是我没有获得我通过的授权令牌的价值。
答案 0 :(得分:1)
尝试以下
const headers = new HttpHeaders()
.set("X-CustomHeader", "custom header value")
.set("XX","VALUE");
请注意,我们正在通过链接构建HttpHeaders对象 连续的set()方法。这是因为HttpHeaders是不可变的, 及其API方法不会导致对象突变。相反,打电话给 set将返回包含新值的新HttpHeaders对象 属性。
<强>更新强>
const headers = new HttpHeaders()
.set("X-CustomHeader", "custom header value");
this.users = this.http
.get(
"https://reqres.in/api/users",
{headers})
.do(console.log)
.map(data => console.log(data));
有关详细信息,请查看此link
答案 1 :(得分:0)
如果您需要来自服务器API的标头,则需要在您的角度http请求中添加observe。 Angular 5例子:
const options = { observe: 'response' };
this.http.get<ResultResponse>(serverApiUrl, options)
.pipe(
map((res: HttpResponse) => {
console.log(res.headers);
console.log(res.headers.get('Content-Disposition'));
return res;
})
);
如果要为角度http请求添加(多个)标题:
const headers = new HttpHeaders()
.set('Content-Type', 'application/json')
.set('Authorization', 'Basic ' + btoa(username + ':' + password));
const options = { headers };
return this.http.get<any>('/service/login', options)
.pipe(
catchError(this.handleError)
);