|
|
|
@ -3,10 +3,10 @@ package com.gitee.sop.gatewaycommon.manager; |
|
|
|
|
import com.gitee.sop.gatewaycommon.bean.ApiConfig; |
|
|
|
|
import com.gitee.sop.gatewaycommon.bean.ApiContext; |
|
|
|
|
import com.gitee.sop.gatewaycommon.bean.BeanInitializer; |
|
|
|
|
import com.gitee.sop.gatewaycommon.interceptor.RouteInterceptor; |
|
|
|
|
import com.gitee.sop.gatewaycommon.bean.SpringContext; |
|
|
|
|
import com.gitee.sop.gatewaycommon.gateway.loadbalancer.NacosServerIntrospector; |
|
|
|
|
import com.gitee.sop.gatewaycommon.interceptor.MonitorRouteInterceptor; |
|
|
|
|
import com.gitee.sop.gatewaycommon.interceptor.RouteInterceptor; |
|
|
|
|
import com.gitee.sop.gatewaycommon.limit.LimitManager; |
|
|
|
|
import com.gitee.sop.gatewaycommon.loadbalancer.SopPropertiesFactory; |
|
|
|
|
import com.gitee.sop.gatewaycommon.message.ErrorFactory; |
|
|
|
@ -40,6 +40,7 @@ import org.springframework.context.event.EventListener; |
|
|
|
|
import org.springframework.core.env.Environment; |
|
|
|
|
import org.springframework.web.cors.CorsConfiguration; |
|
|
|
|
import org.springframework.web.cors.UrlBasedCorsConfigurationSource; |
|
|
|
|
import org.springframework.web.cors.reactive.CorsWebFilter; |
|
|
|
|
import org.springframework.web.filter.CorsFilter; |
|
|
|
|
|
|
|
|
|
import javax.annotation.PostConstruct; |
|
|
|
@ -184,11 +185,35 @@ public class AbstractConfiguration implements ApplicationContextAware, Applicati |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 跨域过滤器 |
|
|
|
|
* 跨域过滤器,zuul |
|
|
|
|
*/ |
|
|
|
|
@Bean |
|
|
|
|
@ConditionalOnMissingBean |
|
|
|
|
@ConditionalOnProperty("zuul.servlet-path") |
|
|
|
|
public CorsFilter corsFilter() { |
|
|
|
|
return createCorsFilter(); |
|
|
|
|
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); |
|
|
|
|
source.registerCorsConfiguration("/**", createCorsConfiguration()); |
|
|
|
|
return new CorsFilter(source); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 跨域过滤器,gateway采用react形式,需要使用reactive包下的UrlBasedCorsConfigurationSource |
|
|
|
|
*/ |
|
|
|
|
@Bean |
|
|
|
|
@ConditionalOnMissingBean |
|
|
|
|
@ConditionalOnProperty("sop.gateway-index-path") |
|
|
|
|
public CorsWebFilter corsWebFilter() { |
|
|
|
|
org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource source = new org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource(); |
|
|
|
|
source.registerCorsConfiguration("/**", createCorsConfiguration()); |
|
|
|
|
return new CorsWebFilter(source); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private CorsConfiguration createCorsConfiguration() { |
|
|
|
|
CorsConfiguration corsConfiguration = new CorsConfiguration(); |
|
|
|
|
corsConfiguration.addAllowedOrigin("*"); |
|
|
|
|
corsConfiguration.addAllowedHeader("*"); |
|
|
|
|
corsConfiguration.addAllowedMethod("*"); |
|
|
|
|
return corsConfiguration; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -211,24 +236,6 @@ public class AbstractConfiguration implements ApplicationContextAware, Applicati |
|
|
|
|
return new EurekaServerIntrospector(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
protected CorsFilter createCorsFilter() { |
|
|
|
|
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); |
|
|
|
|
this.registerCorsConfiguration(source); |
|
|
|
|
return new CorsFilter(source); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
protected void registerCorsConfiguration(UrlBasedCorsConfigurationSource source) { |
|
|
|
|
source.registerCorsConfiguration("/**", corsConfiguration()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
protected CorsConfiguration corsConfiguration() { |
|
|
|
|
CorsConfiguration corsConfiguration = new CorsConfiguration(); |
|
|
|
|
corsConfiguration.addAllowedOrigin("*"); |
|
|
|
|
corsConfiguration.addAllowedHeader("*"); |
|
|
|
|
corsConfiguration.addAllowedMethod("*"); |
|
|
|
|
return corsConfiguration; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void run(ApplicationArguments args) throws Exception { |
|
|
|
|
this.isStartupCompleted = true; |
|
|
|
|