|
@@ -1,70 +1,70 @@
|
|
|
-//package com.diagbot.config;
|
|
|
-//
|
|
|
-//import org.springframework.cloud.client.discovery.DiscoveryClient;
|
|
|
-//import org.springframework.cloud.gateway.discovery.DiscoveryClientRouteDefinitionLocator;
|
|
|
-//import org.springframework.cloud.gateway.discovery.DiscoveryLocatorProperties;
|
|
|
-//import org.springframework.cloud.gateway.route.RouteDefinitionLocator;
|
|
|
-//import org.springframework.context.annotation.Bean;
|
|
|
-//import org.springframework.context.annotation.Configuration;
|
|
|
-//import org.springframework.http.HttpHeaders;
|
|
|
-//import org.springframework.http.HttpMethod;
|
|
|
-//import org.springframework.http.HttpStatus;
|
|
|
-//import org.springframework.http.codec.ServerCodecConfigurer;
|
|
|
-//import org.springframework.http.codec.support.DefaultServerCodecConfigurer;
|
|
|
-//import org.springframework.http.server.reactive.ServerHttpRequest;
|
|
|
-//import org.springframework.http.server.reactive.ServerHttpResponse;
|
|
|
-//import org.springframework.web.cors.reactive.CorsUtils;
|
|
|
-//import org.springframework.web.server.ServerWebExchange;
|
|
|
-//import org.springframework.web.server.WebFilter;
|
|
|
-//import org.springframework.web.server.WebFilterChain;
|
|
|
-//import reactor.core.publisher.Mono;
|
|
|
-//
|
|
|
-///**
|
|
|
-// * @Description: 跨域路由配置
|
|
|
-// * @author: gaodm
|
|
|
-// * @time: 2018/9/28 9:39
|
|
|
-// */
|
|
|
-//@Configuration
|
|
|
-//public class RouteConfigurer {
|
|
|
-//
|
|
|
-// private static final String ALL = "*";
|
|
|
-// private static final String MAX_AGE = "18000L";
|
|
|
-//
|
|
|
-// @Bean
|
|
|
-// public RouteDefinitionLocator discoveryClientRouteDefinitionLocator(DiscoveryClient discoveryClient,
|
|
|
-// DiscoveryLocatorProperties properties) {
|
|
|
-// return new DiscoveryClientRouteDefinitionLocator(discoveryClient, properties);
|
|
|
-// }
|
|
|
-//
|
|
|
-// @Bean
|
|
|
-// public ServerCodecConfigurer serverCodecConfigurer() {
|
|
|
-// return new DefaultServerCodecConfigurer();
|
|
|
-// }
|
|
|
-//
|
|
|
-// @Bean
|
|
|
-// public WebFilter corsFilter() {
|
|
|
-// return (ServerWebExchange ctx, WebFilterChain chain) -> {
|
|
|
-// ServerHttpRequest request = ctx.getRequest();
|
|
|
-// if (!CorsUtils.isCorsRequest(request)) {
|
|
|
-// return chain.filter(ctx);
|
|
|
-// }
|
|
|
-// HttpHeaders requestHeaders = request.getHeaders();
|
|
|
-// ServerHttpResponse response = ctx.getResponse();
|
|
|
-// HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod();
|
|
|
-// HttpHeaders headers = response.getHeaders();
|
|
|
-// headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, requestHeaders.getOrigin());
|
|
|
-// headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, requestHeaders.getAccessControlRequestHeaders());
|
|
|
-// if (requestMethod != null) {
|
|
|
-// headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, requestMethod.name());
|
|
|
-// }
|
|
|
-// headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
|
|
|
-// headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, ALL);
|
|
|
-// headers.add(HttpHeaders.ACCESS_CONTROL_MAX_AGE, MAX_AGE);
|
|
|
-// if (request.getMethod() == HttpMethod.OPTIONS) {
|
|
|
-// response.setStatusCode(HttpStatus.OK);
|
|
|
-// return Mono.empty();
|
|
|
-// }
|
|
|
-// return chain.filter(ctx);
|
|
|
-// };
|
|
|
-// }
|
|
|
-//}
|
|
|
+package com.diagbot.config;
|
|
|
+
|
|
|
+import org.springframework.cloud.client.discovery.DiscoveryClient;
|
|
|
+import org.springframework.cloud.gateway.discovery.DiscoveryClientRouteDefinitionLocator;
|
|
|
+import org.springframework.cloud.gateway.discovery.DiscoveryLocatorProperties;
|
|
|
+import org.springframework.cloud.gateway.route.RouteDefinitionLocator;
|
|
|
+import org.springframework.context.annotation.Bean;
|
|
|
+import org.springframework.context.annotation.Configuration;
|
|
|
+import org.springframework.http.HttpHeaders;
|
|
|
+import org.springframework.http.HttpMethod;
|
|
|
+import org.springframework.http.HttpStatus;
|
|
|
+import org.springframework.http.codec.ServerCodecConfigurer;
|
|
|
+import org.springframework.http.codec.support.DefaultServerCodecConfigurer;
|
|
|
+import org.springframework.http.server.reactive.ServerHttpRequest;
|
|
|
+import org.springframework.http.server.reactive.ServerHttpResponse;
|
|
|
+import org.springframework.web.cors.reactive.CorsUtils;
|
|
|
+import org.springframework.web.server.ServerWebExchange;
|
|
|
+import org.springframework.web.server.WebFilter;
|
|
|
+import org.springframework.web.server.WebFilterChain;
|
|
|
+import reactor.core.publisher.Mono;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Description: 跨域路由配置
|
|
|
+ * @author: gaodm
|
|
|
+ * @time: 2018/9/28 9:39
|
|
|
+ */
|
|
|
+@Configuration
|
|
|
+public class RouteConfigurer {
|
|
|
+
|
|
|
+ private static final String ALL = "*";
|
|
|
+ private static final String MAX_AGE = "18000L";
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public RouteDefinitionLocator discoveryClientRouteDefinitionLocator(DiscoveryClient discoveryClient,
|
|
|
+ DiscoveryLocatorProperties properties) {
|
|
|
+ return new DiscoveryClientRouteDefinitionLocator(discoveryClient, properties);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public ServerCodecConfigurer serverCodecConfigurer() {
|
|
|
+ return new DefaultServerCodecConfigurer();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public WebFilter corsFilter() {
|
|
|
+ return (ServerWebExchange ctx, WebFilterChain chain) -> {
|
|
|
+ ServerHttpRequest request = ctx.getRequest();
|
|
|
+ if (!CorsUtils.isCorsRequest(request)) {
|
|
|
+ return chain.filter(ctx);
|
|
|
+ }
|
|
|
+ HttpHeaders requestHeaders = request.getHeaders();
|
|
|
+ ServerHttpResponse response = ctx.getResponse();
|
|
|
+ HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod();
|
|
|
+ HttpHeaders headers = response.getHeaders();
|
|
|
+ headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, requestHeaders.getOrigin());
|
|
|
+ headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, requestHeaders.getAccessControlRequestHeaders());
|
|
|
+ if (requestMethod != null) {
|
|
|
+ headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, requestMethod.name());
|
|
|
+ }
|
|
|
+ headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
|
|
|
+ headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, ALL);
|
|
|
+ headers.add(HttpHeaders.ACCESS_CONTROL_MAX_AGE, MAX_AGE);
|
|
|
+ if (request.getMethod() == HttpMethod.OPTIONS) {
|
|
|
+ response.setStatusCode(HttpStatus.OK);
|
|
|
+ return Mono.empty();
|
|
|
+ }
|
|
|
+ return chain.filter(ctx);
|
|
|
+ };
|
|
|
+ }
|
|
|
+}
|