From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master
---
jnpf-gateway/src/main/java/jnpf/config/CorsConfig.java | 75 +++++++++++++++++++++++++++++++++++++
1 files changed, 75 insertions(+), 0 deletions(-)
diff --git a/jnpf-gateway/src/main/java/jnpf/config/CorsConfig.java b/jnpf-gateway/src/main/java/jnpf/config/CorsConfig.java
new file mode 100644
index 0000000..e965fd7
--- /dev/null
+++ b/jnpf-gateway/src/main/java/jnpf/config/CorsConfig.java
@@ -0,0 +1,75 @@
+package jnpf.config;
+
+import org.springframework.cloud.client.discovery.ReactiveDiscoveryClient;
+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.core.annotation.Order;
+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.WebFilter;
+import reactor.core.publisher.Mono;
+
+/**
+ * 璺ㄥ煙闂
+ *
+ * @author JNPF寮�鍙戝钩鍙扮粍
+ * @version V3.1.0
+ * @copyright 寮曡繄淇℃伅鎶�鏈湁闄愬叕鍙革紙https://www.jnpfsoft.com锛�
+ * @date 2021-03-24
+ */
+@Configuration
+public class CorsConfig {
+ private static final String ALL = "*";
+ private static final String MAX_AGE = "18000L";
+
+
+ @Bean
+ public RouteDefinitionLocator discoveryClientRouteDefinitionLocator(ReactiveDiscoveryClient discoveryClient, DiscoveryLocatorProperties properties) {
+ return new DiscoveryClientRouteDefinitionLocator(discoveryClient, properties);
+ }
+
+
+ //AuthFilter鐨勯粯璁ら『搴忔槸-100 璺ㄥ煙閰嶇疆鍦ㄨ璇佷箣鍓嶆墽琛�
+// @Bean
+// @Order(-200)
+ public WebFilter corsFilter() {
+ return (ctx, 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);
+ };
+ }
+
+ @Bean
+ public ServerCodecConfigurer serverCodecConfigurer() {
+ return new DefaultServerCodecConfigurer();
+ }
+
+}
--
Gitblit v1.8.0