在 Angular 中配置 XSRF 保护时,您可以指定自定义 cookie 和标头名称:
imports: [
HttpClientModule,
HttpClientXsrfModule.withOptions({
cookieName: 'My-Xsrf-Cookie',
headerName: 'My-Xsrf-Header',
}),
],
有没有办法稍后获取这些值以在您自己的服务/拦截器/组件中使用?
我可以看到,Angular 源代码中为 XSRF_COOKIE_NAME 和 XSRF_HEADER_NAME 定义了注入令牌:https://github.com/angular/angular/blob/main/packages/common/http/src/xsrf.ts#L27C14-L27C31 ,但它们似乎没有暴露,因为注射它们不起作用:
import { XSRF_HEADER_NAME } from '@angular/common/http'; // ERROR: Module "@angular/common/http" has no exported member 'XSRF_HEADER_NAME'.ts(2305)
import { Inject, Injectable } from '@angular/core';
@Injectable()
export class MyService {
public constructor(
@Inject(XSRF_HEADER_NAME) private readonly _xsrfHeaderName: string,
) {}
}
或者我从错误的地方导入它?
我知道我可以通过创建具有所需值的自己的注入令牌并在我的服务中使用它来解决这个问题,但这不是这个问题的重点。我特别感兴趣是否有一种方法可以将配置的值传递给
HttpClientXsrfModule
。
不,不会屈服于您提到的解决方法,也不会深入研究 Angular 内部结构,例如
HttpClientXsrfModule.ɵinj
或类似的东西。
也许令牌提取器可以帮助您完成您正在寻找的任何事情?你来这里的目标是什么?