问题描述:
在使用Angular的http.get方法发送GET请求时,发现头部信息不被识别。
解决方法:
可以通过在http.get方法中传入第二个参数,设置请求头部信息。例如:
import { HttpClient, HttpHeaders } from '@angular/common/http';
// ...
const headers = new HttpHeaders().set('Authorization', 'Bearer token123');
this.http.get(url, { headers }).subscribe(response => {
console.log(response);
});
上述代码中,通过创建一个HttpHeaders对象,并使用set方法设置Authorization头部信息,然后将headers对象作为第二个参数传入http.get方法中。
可以使用Angular的拦截器来统一设置请求的头部信息。首先,创建一个拦截器类:
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpHeaders } from '@angular/common/http';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
intercept(req: HttpRequest, next: HttpHandler) {
const authReq = req.clone({
headers: req.headers.set('Authorization', 'Bearer token123')
});
return next.handle(authReq);
}
}
然后,在app.module.ts文件中将该拦截器添加到providers数组中:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { AppComponent } from './app.component';
import { AuthInterceptor } from './auth.interceptor';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, HttpClientModule],
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: AuthInterceptor,
multi: true
}
],
bootstrap: [AppComponent]
})
export class AppModule {}
上述代码中,将AuthInterceptor类添加到providers数组中,并使用provide属性指定HTTP_INTERCEPTORS标识符,将multi属性设置为true。
这样,每次发送http请求时,都会经过AuthInterceptor拦截器,拦截器会设置请求的头部信息。
总结:
以上是解决Angular的http.get头部信息不被识别的两种方法,可以根据具体需求选择适合的方法来设置头部信息。