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

Spring Boot Security配置:允许OPTIONS/HEAD请求无需认证

解决Spring Security放行OPTIONS/HEAD未认证请求的问题

很简单,你只需要在HttpSecurity的配置中,优先对OPTIONS和HEAD请求设置放行规则,再要求其他所有请求必须认证就行。结合你现有的代码,完整配置如下:

import org.springframework.http.HttpMethod;
// 其他必要的导入

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        // 处理CSRF(如果项目启用了CSRF保护,OPTIONS请求通常可跳过校验)
        .csrf()
            .ignoringRequestMatchers(HttpMethod.OPTIONS)
            .and()
        // 配置请求授权规则
        .authorizeRequests()
            // 放行所有路径的OPTIONS和HEAD请求,无需认证
            .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
            .antMatchers(HttpMethod.HEAD, "/**").permitAll()
            // 其余所有请求必须经过认证
            .anyRequest().authenticated()
            .and()
        // 保留你原有的自定义过滤器配置
        .addFilterBefore(new AuthenticationFilter(authenticationManager()), BasicAuthenticationFilter.class)
        // 如有其他自定义过滤器,继续在此处添加
        .addFilterBefore(/* 你的其他过滤器实例 */, /* 目标过滤器类 */);
}

关键细节说明:

  • 规则顺序优先级:Spring Security的授权规则是从上到下匹配的,一旦匹配到对应规则就会停止后续判断,所以一定要把permitAll()的放行规则放在anyRequest().authenticated()前面,否则会被全局认证规则覆盖。
  • CSRF适配:如果你的项目启用了CSRF保护(Spring Boot默认启用),建议对OPTIONS请求跳过CSRF校验——这类请求多为浏览器预检请求,不会携带CSRF令牌,跳过校验能避免不必要的请求失败。
  • 路径灵活配置:"/**"表示匹配所有路径,如果你只需要放行特定路径的OPTIONS/HEAD请求,把这里改成对应路径即可,比如"/api/**"。

这样配置后,所有OPTIONS和HEAD请求都无需认证就能访问,其他请求则会正常走你自定义的认证过滤器流程。

内容的提问来源于stack exchange,提问作者pedrorocha.org

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:21:05