欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring cloud gateway跨域问题

程序员文章站 2022-07-10 16:11:06
...

在访问服务的时候,必然会遇到跨域问题,如图:
spring cloud gateway跨域问题

spring cloud gateway跨域问题
spring cloud gateway跨域问题
当我直接访问服务的时候可以获取到结果的JSON数据,但是跨域访问的时候就获取不到数据。
解决方法:
由于gateway使用的是webflux,而不是springmvc,所以我们需要先关闭wenbflux的cors,再去gateway的filter里边设置cors就行了。代码如下:

package com.lt.gateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.util.pattern.PathPatternParser;

@Configuration
public class CorsConfig {

    @Bean
    public CorsWebFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        config.addAllowedMethod("*");
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
        source.registerCorsConfiguration("/**", config);
        return new CorsWebFilter(source);
    }
}

gateway配置:

spring:
  cloud:
    gateway:
      globalcors:
        corsConfigurations:
          '[/**]':
            allowedHeaders: "*"
            allowedOrigins: "*"
            allowedMethods:
              - GET

配置完成后重新启动测试:
spring cloud gateway跨域问题
可以发现现在就能跨域访问了。