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

Spring Boot开发中如何用Postman携带CSRF令牌发送POST请求

解决Postman中Spring Boot CSRF Token获取并复用的问题

核心原理回顾

Spring Security默认开启CSRF防护:

  • GET/HEAD/OPTIONS等安全方法无需CSRF Token
  • POST/PUT/DELETE等修改类请求必须携带与Session绑定的CSRF Token
  • 默认CSRF Token会以XSRF-TOKEN为名存入Cookie,请求时需在Header中携带X-XSRF-TOKEN,值为Cookie中的Token内容

关键前置配置(Spring Boot端)

如果你的Security配置自定义过,必须确保CSRF Token的Cookie允许客户端读取,否则Postman无法提取:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .csrf()
                // 允许Cookie被客户端脚本读取(必须设置,否则Postman拿不到Token)
                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
            .and()
            // 其他认证/授权配置示例
            .authorizeRequests()
                .antMatchers("/blog/**").permitAll()
                .anyRequest().authenticated();
    }
}

Postman端完整操作步骤

1. 获取CSRF Token并存入变量

  • 新建一个GET请求,指向任意受Spring Security保护的接口(比如GET /blog/list)
  • 在该请求的Tests标签页中,添加如下脚本提取Cookie中的Token并存储:
    // 从响应Cookie中提取XSRF-TOKEN
    const xsrfToken = pm.cookies.get("XSRF-TOKEN");
    // 将Token存入环境变量(用全局变量则替换为pm.globals.set)
    pm.environment.set("XSRF-TOKEN", xsrfToken);
    
  • 发送该GET请求,执行后检查Postman的环境变量列表,确认XSRF-TOKEN已被正确赋值(不再是undefined)

2. 在POST请求中复用Token

  • 打开你的POST请求(比如POST /blog/create)
  • 在Headers标签页中添加一条Header:
    • Key: X-XSRF-TOKEN
    • Value: {{XSRF-TOKEN}}(Postman会自动替换为环境变量中的值)
  • 确保POST请求携带正确的Session Cookie(Postman默认会自动保存并发送之前GET请求的JSESSIONID Cookie,无需手动添加)
  • 发送POST请求,即可正常通过CSRF校验

常见问题排查

  • 变量仍为undefined:检查Spring Security配置是否开启了withHttpOnlyFalse(),如果Cookie是HttpOnly的,Postman脚本无法读取;同时确认GET请求确实触发了Spring Security生成CSRF Cookie(可在Postman的Cookies面板查看是否存在XSRF-TOKEN)
  • POST仍返回403:确保X-XSRF-TOKEN的Header值与Cookie中的XSRF-TOKEN完全一致,且POST请求使用的Session(JSESSIONID)与获取Token时的Session相同
  • Cookie名称不匹配:如果自定义了CSRF Cookie的名称,需同步修改Postman脚本中的Cookie名称

内容的提问来源于stack exchange,提问作者Tamsin-chan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:25:20