geteway网关跨域更优雅的配置

文章讲述了作者在从SpringBoot2.3升级到2.7版本时,跨域配置失效的问题,发现`allowedOrigin`配置已改为`allowedOriginPatterns`。最终作者选择使用SpringCloudGateway的全局跨域配置方法解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前项目配置跨域没问题,新做一个项目就不行啦,写一下解决过程。

之前项目,spring-boot版本2.3.12.RELEASE,spring-cloud版本Hoxton.SR12。

跨域配置

@Configuration
public class CorsConfig {
    @Bean
    public CorsWebFilter corsFilter() {

        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.addAllowedMethod("*");
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        config.setMaxAge(3600L);
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config);

        return new CorsWebFilter(source);
    }
}

新项目,spring-boot版本2.7.18,spring-cloud版本2021.0.8。

当我直接挪过来配置,发现竟然没生效,一直找不到原因,最后发现是过滤AllowedOrigin配置修改的方法已经变了。新的配置,改为了allowedOriginPatterns。

@Configuration
public class CorsConfig {
    @Bean
    public CorsWebFilter corsFilter() {

        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.addAllowedMethod("*");
        config.allowedOriginPatterns("*");
        config.addAllowedHeader("*");
        config.setMaxAge(3600L);
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config);

        return new CorsWebFilter(source);
    }
}

后来在官网上看到了纯配置文件方式,决定把CorsConfig干掉,改用springclod的贴心配置。在yml中配置:

spring:
  cloud:
    gateway:
      # 跨域配置
      globalcors:
        add-to-simple-url-handler-mapping: true
        corsConfigurations:
          '[/**]':
            allowedOriginPatterns: '*'
            allowedMethods: '*'
            allowedHeaders: '*'
            allowCredentials: true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值