红茶的个人站点

  • 首页
  • 专栏
  • 开发工具
  • 其它
  • 隐私政策
Awalon
Talk is cheap,show me the code.
  1. 首页
  2. 开发工具
  3. 正文

Apifox + Spring Security 接口调试

2026年1月4日 70点热度 0人点赞 0条评论

Spring Security 默认会启用 CSRF 防护,此时需要在请求中通过参数或请求头传入 CSRF token,否则服务端会报错。因此,如果用接口调试工具调试对应的接口,就需要一些特殊设置。

首先,需要修改服务端 Spring Security 设置:

@Configuration
@EnableWebSecurity
public class AuthenticationManagerConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
                .authorizeHttpRequests((authorize) -> authorize
                        .requestMatchers("/login","/hello").permitAll()
                        .anyRequest().authenticated()
                )
                .csrf(csrf -> csrf
                        .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                        .csrfTokenRequestHandler(new CsrfTokenRequestAttributeHandler())
                );
        return http.build();
    }
}

这里的.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())是为了让服务端在需要的时候(登录、POST\PUT 请求时)返回报文的 Cookie 中添加 CSRF token,这样客户端就可以将该 token 保存并在请求中使用。

.csrfTokenRequestHandler(new CsrfTokenRequestAttributeHandler())是为了兼容性,Spring Boot 3.X 之后,为了安全性,默认不允许客户端直接将服务端返回的 token 发送给服务端,而是需要客户端进一步加密后再发送,因此,如果需要直接发送 token 原文,就需要这种兼容性设置。

当客户端请求时缺少 CSRF token,服务端默认返回的报文状态码是 403,可以在客户端添加执行后脚本,如果出现这种情况,就将返回报文的 CSRF token 保存到环境变量中:

if(pm.response.code='403'){
    let token = pm.response.cookies.get('XSRF-TOKEN');
    console.log(token);
    pm.environment.set('csrf-token', token);
    console.log("csrf token 已写入环境变量");
}

为了方便在每一个需要的接口中添加,可以将该脚本添加到脚本库中。

添加全局参数,使用该环境变量作为 Header:

image-20260104141501933

现在再请求就 OK 了。

The End.

参考资料

  • Apifox 帮助文档

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: apifox security spring
最后更新:2026年1月4日

魔芋红茶

加一点PHP,加一点Go,加一点Python......

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED.
本网站由提供CDN加速/云存储服务

Theme Kratos Made By Seaton Jiang

宁ICP备2021001508号

宁公网安备64040202000141号