关于Gateway网关中配置跨域的三种方案
作者:龙茶清欢
文章总结:介绍了三种处理跨域请求的方法:在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
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。