SpringCloud Gateway跨域配置
本文内容纲要:
Springboot版本:2.1.8.RELEASE
SpringCloud版本:Greenwich.SR2
yml配置:
spring:
cloud:
gateway:
globalcors:
cors-configurations:
'[/**]':
#允许携带认证信息
#允许跨域的源(网站域名/ip),设置*为全部
#允许跨域请求里的head字段,设置*为全部
#允许跨域的method,默认为GET和OPTIONS,设置*为全部
#跨域允许的有效期
allow-credentials:true
allowed-origins:
-"http://localhost:13009"
-"http://localhost:13010"
allowed-headers:"*"
allowed-methods:
-OPTIONS
-GET
-POST
max-age:3600
#允许response的head信息
#默认仅允许如下6个:
#Cache-Control
#Content-Language
#Content-Type
#Expires
#Last-Modified
#Pragma
#exposed-headers:
配置类:org.springframework.cloud.gateway.config.GlobalCorsProperties
网上有很多人说这样配无效,但我测试下来是OK的,如果真的无效,可以手动去装配Cros配置:
packagecom.longge.gateway.configuration;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.boot.autoconfigure.condition.ConditionalOnBean;
importorg.springframework.cloud.gateway.config.GlobalCorsProperties;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.web.cors.reactive.CorsWebFilter;
importorg.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
importorg.springframework.web.util.pattern.PathPatternParser;
/**
*@authorrogeryang
*@date11/21/2019
*/
@Configuration
@ConditionalOnBean(GlobalCorsProperties.class)
publicclassCorsAutoConfiguration{
@Autowired
privateGlobalCorsPropertiesglobalCorsProperties;
@Bean
publicCorsWebFiltercorsFilter(){
UrlBasedCorsConfigurationSourcesource=newUrlBasedCorsConfigurationSource(newPathPatternParser());
globalCorsProperties.getCorsConfigurations().forEach((path,corsConfiguration)->source.registerCorsConfiguration(path,corsConfiguration));
returnnewCorsWebFilter(source);
}
}
当然,我们更推荐在Nginx等中间件去做跨域的处理,业务服务就应该关注业务。
Nginx配置跨域可以参考我的另外一篇Blog:https://www.cnblogs.com/yangzhilong/p/9230778.html
本文内容总结:
原文链接:https://www.cnblogs.com/yangzhilong/p/11905007.html