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