springcloud gatway网关解决跨域问题,开发时,遇到application.yml,设置如下,但我在实际开发中不生效:
spring:
cloud:
gateway:
globalcors:
corsConfigurations:
'[/**]':
allowedOrigins: "*"
allowedMethods: "*"
解决这个问题,可以从两方面入手,一种方案是在微服务各自的业务模块中实现,即在SpringBoot层实现,另外一种方案就是在Gateway层实现。
SpringBoot层实现的三种方案:
解决方案一:在Controller上添加@CrossOrigin注解
这种方式适合只有一两个rest接口需要跨域或者没有网关的情况下,这种处理方式就非常简单,适合在原来基代码基础上修改,影响比较小。
@CrossOrigin //跨源资源共享注解
@RestController
@RequestMapping("bill")
@RefreshScope //配置文件改变自动刷新属性
public class BillController {
//方法体........
}
解决方案二:增加WebMvcConfigurer全局配置
如果有大量的rest接口的时候,显然第一种方案已经不适合了,工作量大,也容易出错,那就通过全局配置的方式,允许SpringBoot端所有的rest接口都支持跨域访问,这个时候就需要考虑安全性的问题。
代码如下:
@Configuration
public class MyConfiguration {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowCredentials(true).allowedMethods("GET")