Angular 2获取带头的请求

时间:2017-12-29 06:28:14

标签: angular

我发现了几个帖子,我发现我们可以使用以下代码在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));

在上面的代码中我得到如下所示的标题: HTTP Headers 在Web API上,我得到标题:'access-control-request-headers': 'authorization'。 问题是我没有获得我通过的授权令牌的价值。

2 个答案:

答案 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)
  );