|
@@ -0,0 +1,52 @@
|
|
|
+package com.farm.gateway.config;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Project : huimv.shiwan
|
|
|
+ * @Package : com.huimv.biosafety.uface.controller
|
|
|
+ * @Description : TODO
|
|
|
+ * @Version : 1.0
|
|
|
+ * @Author : ZhuoNing
|
|
|
+ * @Create : 2020-12-25
|
|
|
+ **/
|
|
|
+
|
|
|
+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.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;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 跨域配置
|
|
|
+ * @author chengwenbing
|
|
|
+ */
|
|
|
+@Configuration
|
|
|
+public class CorsConfig {
|
|
|
+ @Bean
|
|
|
+ public WebFilter corsFilter() {
|
|
|
+ return (ServerWebExchange ctx, WebFilterChain chain) -> {
|
|
|
+ ServerHttpRequest request = ctx.getRequest();
|
|
|
+ if (CorsUtils.isCorsRequest(request)) {
|
|
|
+ ServerHttpResponse response = ctx.getResponse();
|
|
|
+ HttpHeaders headers = response.getHeaders();
|
|
|
+ headers.set(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, request.getHeaders().getOrigin());
|
|
|
+ headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, "X-Token,Authorization,x-requested-with,Content-Type");
|
|
|
+ headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, "PUT,POST, GET, OPTIONS, DELETE");
|
|
|
+ headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
|
|
|
+ headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "*");
|
|
|
+ headers.add(HttpHeaders.ACCESS_CONTROL_MAX_AGE, "3600");
|
|
|
+ if (request.getMethod() == HttpMethod.OPTIONS) {
|
|
|
+ response.setStatusCode(HttpStatus.OK);
|
|
|
+ return Mono.empty();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return chain.filter(ctx);
|
|
|
+ };
|
|
|
+ }
|
|
|
+}
|