You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular对接Spring Boot时CSRF Token在Postman可用但Angular失效求助

解决Spring Boot CSRF Token在Angular中失效的问题

核心问题与修复方案

1. 修复Spring Security的CSRF匹配器配置

你多次调用requireCsrfProtectionMatcher,但该方法每次调用会覆盖之前的匹配规则,最终只有最后一条DELETE的规则生效,导致POST/PATCH请求的CSRF校验逻辑异常。

修改SecurityConfig中的CSRF配置部分,用OrRequestMatcher组合所有需要校验的请求规则:

.csrf(csrf -> csrf
        .requireCsrfProtectionMatcher(new OrRequestMatcher(
                new AntPathRequestMatcher("/api/v1/**", "POST"),
                new AntPathRequestMatcher("/api/v1/**", "PATCH"),
                new AntPathRequestMatcher("/api/v1/**", "DELETE")
        ))
        .ignoringRequestMatchers(
                new AntPathRequestMatcher("/api/v1/csrf", "POST"),
                new AntPathRequestMatcher("/api/v1/login", "POST")
        ))

2. 修复Angular的CSRF Token获取请求

Spring Security的CSRF Token与用户会话绑定,你在获取Token的请求中未设置withCredentials: true,导致浏览器不携带会话Cookie到后端,生成的Token与后续请求的会话不匹配,校验失败。

修改Angular中获取CSRF Token的请求,添加会话凭证配置:

this.http
  .post(csrfUrl, null, {
    headers: new HttpHeaders({
      Authorization: `Bearer ${bearerToken.trim()}`,
    }),
    withCredentials: true, // 新增:携带会话Cookie
  })
  .subscribe(...)

额外验证步骤

  • 检查浏览器网络请求,确认获取CSRF Token的请求和后续创建产品的请求都携带了相同的JSESSIONID Cookie
  • 确认后端/api/v1/csrf端点返回的Token格式正确,且与当前会话绑定

内容的提问来源于stack exchange,提问作者Davide Balice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 10:30:01