问题描述:
在Angular 9中,当尝试更改或修改HTTP头时,发现无法生效。
解决方法:
在Angular 9中,引入了一个新的默认HTTP拦截器,称为"XSRF"拦截器,用于防止跨站请求伪造。这个拦截器默认会将请求头中的"X-XSRF-TOKEN"设置为与服务器端相匹配的值。
在尝试更改或修改HTTP头之前,我们需要先禁用这个拦截器。
以下是解决方法的代码示例:
import { HttpClientModule, HttpClientXsrfModule } from '@angular/common/http';
@NgModule({
imports: [
HttpClientModule,
HttpClientXsrfModule.withOptions({
cookieName: 'XSRF-TOKEN',
headerName: 'X-XSRF-TOKEN',
}),
// other imports...
],
// other declarations...
})
export class AppModule { }
import { HttpClient } from '@angular/common/http';
@Component({
// component configuration...
})
export class MyComponent {
constructor(private http: HttpClient) {
// Disable XSRF interceptor
this.http.delete('/api/my-endpoint', { headers: { 'X-XSRF-TOKEN': null } })
.subscribe(response => {
// handle response...
});
}
}
通过禁用XSRF拦截器,我们可以修改或更改HTTP头,并发送请求。
请注意,在禁用XSRF拦截器时,需要自行处理跨站请求伪造的安全性问题。