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

如何通过Postman Interceptor获取Spring Security返回的X-CSRF-TOKEN

问题根因
  • 你当前的Spring Security配置未显式指定CSRF Token存储方式,默认使用HttpSessionCsrfTokenRepository将Token存在服务端Session中,不会主动向客户端下发X-CSRF-TOKEN类型的Cookie。Postman Interceptor只能抓取服务端通过Set-Cookie头实际下发的Cookie,自然拿不到对应字段。
  • 即使开启CSRF防护,如果没有配置Cookie形式的Token存储逻辑,客户端永远不会收到对应的CSRF Cookie,和Postman Interceptor的开关配置没有关系。
分步解决操作

1. 调整Spring Security配置

将原有configure方法替换为如下配置,显式指定CSRF Token通过Cookie下发,修改完成后重启服务:

@Override
protected void configure(HttpSecurity http) throws Exception {
    // 配置CSRF Token存储策略:存在Cookie中、关闭HttpOnly属性允许前端/Postman读取
    CookieCsrfTokenRepository csrfTokenRepository = CookieCsrfTokenRepository.withHttpOnlyFalse();
    // 自定义Cookie名称为你需要的X-CSRF-TOKEN
    csrfTokenRepository.setCookieName("X-CSRF-TOKEN");
    // 自定义校验时读取的请求头名称
    csrfTokenRepository.setHeaderName("X-CSRF-TOKEN");

    http
            .authorizeRequests()
            .antMatchers("/", "index", "/css/*", "/js/*").permitAll()
            .antMatchers("/api/**").hasRole(STUDENT.name())
            .anyRequest()
            .authenticated()
            .and()
            .csrf()
            .csrfTokenRepository(csrfTokenRepository)
            .and()
            .httpBasic();
}

必须配置withHttpOnlyFalse(),否则下发的Cookie会携带HttpOnly属性,Postman和前端脚本都无法读取到Token值。

2. Postman + Interceptor正确操作流程

配置完服务端后按以下顺序操作,不需要额外修改Interceptor的默认抓包规则:

  • 打开Postman右上角的Interceptor开关,确认Postman和本地Interceptor插件连接状态正常(插件图标点亮、Postman端Interceptor状态栏显示已连接)
  • 先构造GET类型请求,地址填写你配置中放行的匿名访问路径(比如根路径/或者/index),在Authorization标签页选择Basic Auth,填入你准备好的用户名密码后发送请求
  • 请求返回200状态码后,点开Postman响应面板的Cookies标签,即可看到服务端下发的X-CSRF-TOKEN和SESSIONID两个Cookie
  • 后续发送POST/PUT/DELETE等需要CSRF校验的请求时,保持Interceptor开启即可,Postman会自动读取Cookie中的X-CSRF-TOKEN值,拼接在对应请求头中完成校验,不需要手动复制粘贴。
常见排错点

如果完成上述操作后仍然拿不到对应Cookie,逐一排查以下问题:

  • 确认服务端修改配置后已成功重启,启动日志中没有CSRF相关的配置报错
  • 确认第一次发起的是GET/HEAD/OPTIONS这类幂等请求,Spring Security的CSRF过滤器不会拦截这类请求,只有这类请求正常响应时,才会触发CSRF Cookie的下发逻辑;如果一开始就发POST请求,会被CSRF校验直接拦截,根本不会走到Cookie下发的逻辑
  • 确认请求地址和服务端实际运行的域名、端口完全一致,域名或端口不匹配时Postman会直接拒绝存储对应Cookie
  • 暂时关闭系统全局代理、其他抓包工具,避免代理转发过程中丢失Set-Cookie响应头

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:01:11