关于Gateway网关中配置跨域的三种方案

 更新时间:2024年11月16日 09:52:48   作者:龙茶清欢  
文章总结:介绍了三种处理跨域请求的方法:在Controller类上添加注解、通过配置类实现重写WebMvcConfigurer接口和在配置文件中统一设置,希望这些方法能帮助读者解决跨域问题

Gateway网关中配置跨域的三种方案

方法一

直接在每个Controller类上添加跨域注解

@CrossOrigin

方法二

通过配置类统一处理

@Configuration
public class CorsConfig {

    
    // 该配置适用于reactive响应式环境
    @Bean
    public CorsWebFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        // springboot升级成2.4.0以上时对AllowedOrigin设置发生了改变,不能有”*“,可以替换成AllowedOriginPattern
        config.addAllowedOriginPattern("*");
        config.setAllowCredentials(true);

        // 必须是reactive包下的UrlBasedCorsConfigurationSource 
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
        source.registerCorsConfiguration("/**", config);

        return new CorsWebFilter(source);


    // 该配置适用于servlet环境
    @Bean
    public CorsFilter corsFilter() {
        //1. 添加 CORS配置信息
        CorsConfiguration config = new CorsConfiguration();
        //放行哪些请求方式
        config.addAllowedMethod("*");
        //放行哪些原始请求头部信息
        config.addAllowedHeader("*");
        //放行哪些原始域
        config.addAllowedOriginPattern("*");
        //是否发送 Cookie
        config.setAllowCredentials(true);
        //2. 添加映射路径
        UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
        corsConfigurationSource.registerCorsConfiguration("/**",config);
        //3. 返回新的CorsFilter
        return new CorsFilter(corsConfigurationSource);
    }

重写WebMvcConfigurer接口的默认方法

@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedMethods("*")
                .allowedHeaders("*")
                .allowedOriginPatterns("*")
                .allowCredentials(true);
    }
}

方法三

在配置application.properties或者application.yml文件中进行统一配置

spring:
  cloud:
    gateway:
      globalcors:
        cors-configurations:
          '[/**]':
            allowedMethods: "*"
            allowedHeaders: "*"
            allowedOriginPatterns: "*"
            allowCredentials: true

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 深入剖析ArrayList的remove方法

    深入剖析ArrayList的remove方法

    这篇文章主要介绍了ArrayList的remove方法使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。</p>
    2021-09-09
  • MyBatisPlus使用${ew.customSqlSegment}别名问题解决

    MyBatisPlus使用${ew.customSqlSegment}别名问题解决

    在使用MyBatisPlus进行连表查询时,可能遇到因${ew.customSqlSegment}无法加别名的问题,本文就来介绍一下如何解决,感兴趣的可以了解一下
    2024-10-10
  • Java基础学习之关键字和变量数据类型的那些事

    Java基础学习之关键字和变量数据类型的那些事

    变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据,下面这篇文章主要给大家介绍了关于Java基础学习之关键字和变量数据类型的那些事,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 解决springboot druid数据库连接池连接失败后一直重连问题

    解决springboot druid数据库连接池连接失败后一直重连问题

    这篇文章主要介绍了解决springboot druid数据库连接池连接失败后一直重连问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • java实现变更文件查询的方法

    java实现变更文件查询的方法

    这篇文章主要介绍了java实现变更文件查询的方法,可通过java查询文件最后修改时间的方法实现查找变更文件的功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Springboot集成swagger实现方式

    Springboot集成swagger实现方式

    这篇文章主要介绍了Springboot集成swagger实现方式,通过简单的示例代码详细描述了实现过程步骤,有需要的朋友可以借鉴参考下,希望可以有所帮助
    2021-08-08
  • 23种设计模式(15)java解释器模式

    23种设计模式(15)java解释器模式

    这篇文章主要为大家详细介绍了23种设计模式之java解释器模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Java基本数据类型之间的相互转换详解

    Java基本数据类型之间的相互转换详解

    这篇文章主要讲解Java中基本数据类型的转换,数据之间相互转换是经常会用到的基础操作,文中讲的很清晰,希望能给大家做一个参考。
    2022-05-05
  • 关于Java项目读取resources资源文件路径的那点事

    关于Java项目读取resources资源文件路径的那点事

    这篇文章主要介绍了关于Java项目读取resources资源文件路径的那点事,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • java 如何给对象中的包装类设置默认值

    java 如何给对象中的包装类设置默认值

    这篇文章主要介绍了java 如何给对象中的包装类设置默认值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03

最新评论