在this excellent article on CSRF configuration中,对于Angular ,描述了CSRF配置的两个选项:
首先:使用默认的CSRF配置:
providers: [
{ provide: HTTP_INTERCEPTORS, useExisting: **HttpXsrfInterceptor**, multi: true }
]
第二:如果您使用的是自定义拦截器,则在提供程序部分添加以下内容:
{ provide: HTTP_INTERCEPTORS, useClass: CustomInterceptor, multi: true }
{ provide: HttpXsrfTokenExtractor, useClass: **HttpXsrfCookieExtractor** }
import语句是:
import {HTTP_INTERCEPTORS, HttpClientModule, HttpClientXsrfModule, HttpXsrfTokenExtractor} from '@angular/common/http';
...当然,还有:
imports: [
CommonModule,
...
ReactiveFormsModule,
HttpClientModule,
HttpClientXsrfModule.withOptions({
cookieName: 'X-COOKIE-CSRF-TOKEN',
headerName: 'X-HEADER-CSRF-TOKEN'
})
],
使用Inteli-J时,HttpXsrfInterceptor和HttpXsrfCookieExtractor类都丢失.我搜索了反对的消息,但没有找到.我是不是错过了16号角CSRF保护的变化?
因此,当第一个选项不可行时,我切换到第二个选项.问题是缺少HttpXsrfCookieExtractor.如果不对其进行配置,则getToken()将始终生成"空"Cookie.
我如何在Angular 16(甚至15?)中配置默认的CSRF机制或定制的拦截器机制?