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

迁移至Spring Boot 2.0.x后全局CORS配置失效问题咨询

解决Spring Boot 2.0.x中OPTIONS预检请求无Access-Control-Allow-Credentials头的问题

这个问题我之前踩过坑,本质是Spring Framework 5.x(对应Spring Boot 2.x)对CORS配置的默认行为做了调整,和你之前用的Spring Boot 1.5.x(基于Spring 4.x)逻辑不一样。

问题根源

在Spring Boot 1.5.x的环境下,即使你没有显式配置凭证支持,当请求携带cookie、HTTP认证信息这类凭证时,框架会自动在OPTIONS预检响应中添加Access-Control-Allow-Credentials: true头。但到了Spring Boot 2.x,这个默认逻辑被修改了:

  • 只有当你显式配置allowCredentials(true),框架才会在预检响应中返回这个头;
  • 同时,开启凭证支持后,allowedOrigins不能使用通配符*,必须指定具体的允许源(你代码里已经在这么做了,这点是对的,这也是浏览器同源策略的强制要求)。

修正后的配置代码

另外要注意,Spring Boot 2.x里WebMvcConfigurerAdapter已经被弃用了,官方推荐直接实现WebMvcConfigurer接口(Java 8的默认方法支持让我们不用写适配器类了)。修改后的完整配置如下:

@Configuration
public class CorsConfig {
    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")
                        .allowedOrigins("http://localhost:8080") // 替换为你的实际允许源
                        .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 显式指定允许的HTTP方法
                        .allowCredentials(true); // 关键:显式开启跨域凭证支持
            }
        };
    }
}

验证效果

重启服务后,再发送OPTIONS预检请求,就能在响应头中看到Access-Control-Allow-Credentials: true了,同时携带凭证的跨域请求也能正常通过校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:22:46