在 Angular 版本 6 及更高版本中,HttpXsrfInterceptor
和 HttpXsrfCookieExtractor
类已被废弃。取而代之的是使用新的 HttpClientXsrfModule
模块来处理 CSRF 保护。
下面是一个使用 HttpClientXsrfModule
的示例代码:
HttpClientModule
和 HttpClientXsrfModule
模块。import { HttpClientModule, HttpClientXsrfModule } from '@angular/common/http';
AppModule
中,将 HttpClientModule
和 HttpClientXsrfModule
添加到 imports
数组中。@NgModule({
imports: [
HttpClientModule,
HttpClientXsrfModule.withOptions({
cookieName: 'XSRF-TOKEN',
headerName: 'X-XSRF-TOKEN'
})
],
// ...
})
export class AppModule { }
HttpClient
并使用它来发起请求。import { HttpClient } from '@angular/common/http';
@Injectable()
export class MyService {
constructor(private http: HttpClient) {}
getData() {
return this.http.get('/api/data');
}
postData(data: any) {
return this.http.post('/api/data', data);
}
}
在这个示例中,HttpClientXsrfModule
的 withOptions
方法接受一个对象,其中包含了用于 CSRF 保护的 cookie 名称和请求头名称。你可以根据你的后端设置来调整这些名称。
请记住,为了使该方法生效,你的后端服务器必须在每个返回的响应中包含相应的 CSRF 令牌,并且从请求中读取 CSRF 令牌。
希望这可以帮助到你!