标头未添加到angular

时间:2019-05-01 07:24:51

标签: angular httpclient

我有一个伪造的后端API,在我的代码中,我检查了标头令牌。这是我的假后端代码:

       if (connection.request.url.endsWith('/api/orders') &&
       connection.request.method === RequestMethod.Get) {
       if (connection.request.headers.get('Authorization') === 'Bearer ' 
         + token) {
          connection.mockRespond(new Response(
          new ResponseOptions({ status: 200, body: [1, 2, 3] })
         ));
       } else {
         connection.mockRespond(new Response(
          new ResponseOptions({ status: 401 })
        ));
     }

在我的服务中,我有一个GET方法,该方法将标头添加到请求中以获取数据。

getOrders(){

let token = localStorage.getItem('token');
let headers = new HttpHeaders()
headers = headers.set('Authorization', 'Bearer ' + token);
return this.http.get('/api/orders' , {headers:headers} ).subscribe(result=>{
  console.log('result : ' , result);
});

}

但是,我什么也没得到,结果是空的。状态代码是401,但我无法根据标题获取数据。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我终于找到了答案。在Angular 7中,向请求添加标头的最佳方法是使用拦截器。在拦截器中,您可以将标头添加到请求中,从而可以访问受保护的API。这是将标头添加到请求的拦截器示例:

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
let currentUser = this.authservice.currentUser;
if (currentUser && currentUser.token) {
    request = request.clone({
        setHeaders: {
            Authorization: `Bearer ${currentUser.token}`
        }
    });
}

return next.handle(request)