[英]How to get the response header of a HttpClient.Post request in Angular
[英]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.