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

Spring Boot POST请求401未授权问题求助(GET请求正常)

解决Spring Boot POST请求401未授权问题(GET正常)

以下是几个常见的排查和解决方向:

1. 关闭CSRF保护(最常见原因)

Spring Security默认对POST、PUT、DELETE等非GET请求启用CSRF防护机制,而GET请求不受此限制。如果你的API是供非浏览器客户端(比如Insomnia、Postman)调用的,直接关闭CSRF即可:

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            // 开启HTTP基础认证
            .httpBasic(Customizer.withDefaults())
            // 所有请求都需要认证
            .authorizeHttpRequests(auth -> auth.anyRequest().authenticated())
            // 关闭CSRF保护(非浏览器客户端场景适用)
            .csrf(csrf -> csrf.disable());

        return http.build();
    }
}

2. 检查Insomnia的POST请求认证配置

确认Insomnia中POST请求的Basic Auth配置是否正确:

  • 切换到请求的「Auth」标签页,选择「Basic Auth」类型
  • 重新输入用户名和密码,确保和GET请求使用的凭证一致
  • 查看请求头是否包含Authorization: Basic <base64编码串>,可以在Insomnia的「Headers」标签页验证

3. 排查安全过滤器链的请求权限规则

检查你的Security配置类,是否对POST请求设置了额外的权限限制。比如是否存在类似以下代码,导致POST请求需要更高权限:

// 错误示例:仅允许ADMIN角色访问POST请求
.authorizeHttpRequests(auth -> auth
    .requestMatchers(HttpMethod.POST, "/api/random").hasRole("ADMIN")
    .anyRequest().authenticated()
)

如果有这类配置,要么调整权限规则,要么确保你的认证用户拥有对应角色。

4. 验证请求内容格式

虽然这很少导致401,但如果POST请求携带了请求体,确保Content-Type头设置正确(比如application/json或application/x-www-form-urlencoded),避免因请求解析异常触发安全过滤器的拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:05:26