簡體   English   中英

標頭未添加到HttpClient中的Get請求中

[英]header is not added to the Get request in HttpClient in angular

我有一個假的后端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,我無法根據標題獲取數據。 我該如何解決這個問題?

我終於找到了答案。 在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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM