From 7ea8d1c6da749da69516f47593ae47546a0d3d4c Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 16 十二月 2024 11:36:46 +0800
Subject: [PATCH] 微信登陆

---
 common/src/main/java/com/jilongda/common/config/CorsConfig.java |   48 ++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 38 insertions(+), 10 deletions(-)

diff --git a/common/src/main/java/com/jilongda/common/config/CorsConfig.java b/common/src/main/java/com/jilongda/common/config/CorsConfig.java
index 5550eff..d6dd6a4 100644
--- a/common/src/main/java/com/jilongda/common/config/CorsConfig.java
+++ b/common/src/main/java/com/jilongda/common/config/CorsConfig.java
@@ -2,9 +2,19 @@
 
 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.CorsConfiguration;
 import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.cors.reactive.CorsUtils;
 import org.springframework.web.filter.CorsFilter;
+import org.springframework.web.server.ServerWebExchange;
+import org.springframework.web.server.WebFilter;
+import org.springframework.web.server.WebFilterChain;
+import reactor.core.publisher.Mono;
 
 import java.util.Collections;
 
@@ -24,6 +34,13 @@
  */
 @Configuration
 public class CorsConfig {
+
+    private static final String ALLOWED_HEADERS = "X-Requested-With, Content-Type, Authorization, credential, X-XSRF-TOKEN, token, username, client, request-origion";
+    private static final String ALLOWED_METHODS = "GET,POST,PUT,DELETE";
+    private static final String ALLOWED_ORIGIN = "*";
+    private static final String ALLOWED_EXPOSE = "*";
+    private static final String MAX_AGE = "18000L";
+
     private CorsConfiguration buildConfig() {
         CorsConfiguration corsConfiguration = new CorsConfiguration();
         //1.允许任何来源
@@ -34,20 +51,31 @@
         corsConfiguration.addAllowedMethod(CorsConfiguration.ALL);
         //4.允许凭证
         corsConfiguration.setAllowCredentials(true);
-
-
-
-
         return corsConfiguration;
     }
 
     @Bean
-    public CorsFilter corsFilter() {
-        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-        // 对接口配置跨域设置
-//        source.registerCorsConfiguration("/v2/api-docs/**", buildConfig());
-        source.registerCorsConfiguration("/**", buildConfig());
-        return new CorsFilter(source);
+    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.add("Access-Control-Allow-Headers", ALLOWED_HEADERS);
+                headers.add("Access-Control-Allow-Methods", ALLOWED_METHODS);
+                headers.add("Access-Control-Allow-Origin", ALLOWED_ORIGIN);
+                headers.add("Access-Control-Expose-Headers", ALLOWED_EXPOSE);
+                headers.add("Access-Control-Max-Age", MAX_AGE);
+                headers.add("Access-Control-Allow-Credentials", "false");
+                if (request.getMethod() == HttpMethod.OPTIONS)
+                {
+                    response.setStatusCode(HttpStatus.OK);
+                    return Mono.empty();
+                }
+            }
+            return chain.filter(ctx);
+        };
     }
 
 }

--
Gitblit v1.7.1