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

Spring Security相同凭证GET正常POST返回401问题排查

问题原因

Spring Security 默认开启CSRF(跨站请求伪造)防护规则,该规则仅对GET、HEAD、TRACE、OPTIONS四类请求默认放行校验,其余类型请求(包括POST)都要求携带合法的CSRF Token才能通过校验。你直接用curl发起POST请求时没有携带对应的CSRF Token,就会被安全拦截返回401状态码;而GET请求不属于CSRF校验范围,所以可以正常认证通过返回200。

修复方案

针对学习测试的场景,最简便的方式是直接关闭CSRF防护,修改安全配置类的configure方法即可:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.httpBasic()
            .and()
            .csrf().disable() // 新增该行关闭CSRF防护
            .authorizeRequests()
            .anyRequest()
            .hasRole("ADMIN");
}

如果是正式生产环境存在服务端渲染页面的场景,不建议直接关闭CSRF,此时发起POST请求需要先获取服务端返回的CSRF Token,携带在X-XSRF-TOKEN请求头中发起请求即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:27:04