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机制或定制的拦截器机制?

推荐答案

如果要使用CSRF,请导入HttpClientXsrfModule或添加provideHttpClient(withXsrfConfiguration())

Angular相关问答推荐

日语字符不受角形约束控制

HTTP Get请求未发送到提供的URL

在状态更新后是否会再次触发ngrx效果?

尾风手风琴中的Ngor

具有多重签名的Angular Mocking Service

代码优化以删除Angular中的嵌套订阅

当嵌套在异步容器中时,S会阻止具有动态值的ionic 段工作吗?

错误TS2531:对象可能为空.论窗体数组控件

Angular 单位测试表

ngrx 效果等到从初始值以外的其他状态收到响应

模块内的命名路由出口 - 路径匹配但内容未加载

当访问令牌在 MSAL for Angular 中过期时如何重定向用户?

全局异常处理

如何为所有模块全局声明指令?

Angular 5 国际化

如何在Angular 4中为数字管道指定语言环境千位分隔符

Angular - 是否有 HostListener-Events 列表?

Angular 2中不同页面的多种布局

angular2 测试,我如何模拟子组件

缺少带有Angular的语言环境XXX的语言环境数据