From 1415f6273a7cb91838d002803d13a68f767cba15 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 11 Aug 2026 14:30:19 +0800
Subject: [PATCH] feat(web): 添加访问轨迹接口到WebMvc配置

---
 src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java |   57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 57 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
index f640c22..fc87633 100644
--- a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
+++ b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
@@ -1,7 +1,12 @@
 package cc.mrbird.febs.common.configure;
 
 import cc.mrbird.febs.common.interceptor.LoginInterceptor;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@@ -31,5 +36,57 @@
         registration.excludePathPatterns("/api/leader/noLoginLeaderTitle");
         registration.excludePathPatterns("/api/xcxPay/wxpayCallback");
         registration.excludePathPatterns("/api/xcxPay/rechargeCallBack");
+        registration.excludePathPatterns("/api/xcxPay/fapiaoCallBack");
+        registration.excludePathPatterns("/api/fuPayReturn/callback");
+        registration.excludePathPatterns("/api/fuPayReturn/payment/callback");
+        registration.excludePathPatterns("/api/fuPay/notify");
+        registration.excludePathPatterns("/api/tokenview/**");
+        registration.excludePathPatterns("/api/order/lwPayNotify");
+        registration.excludePathPatterns("/api/order/lwPayReturn");
+        registration.excludePathPatterns("/api/order/bsPayNotify");
+        registration.excludePathPatterns("/api/track/visit");
+
+        // 添加Swagger UI相关路径
+        registration.excludePathPatterns("/api/swagger-ui.html");
+        registration.excludePathPatterns("/v2/api-docs");
+        registration.excludePathPatterns("/configuration/ui");
+        registration.excludePathPatterns("/configuration/security");
+        registration.excludePathPatterns("/swagger-resources");
+    }
+
+    /**
+     * Servlet 级别的跨域过滤器,比 Shiro Filter 和 Spring MVC Interceptor 优先级更高,
+     * 确保 OPTIONS 预检请求能正确返回 CORS 头。
+     */
+    @Bean
+    public CorsFilter corsFilter() {
+        CorsConfiguration config = new CorsConfiguration();
+        // 允许的来源域名(根据实际情况添加)
+        config.addAllowedOrigin("https://www.polypepprotein.com");
+        config.addAllowedOrigin("https://polypepprotein.com");
+        config.addAllowedOrigin("http://localhost:30002");
+        // 允许所有方法
+        config.addAllowedMethod("*");
+        // 允许所有请求头
+        config.addAllowedHeader("*");
+        // 允许携带 Cookie / Authorization 等凭证信息
+        config.setAllowCredentials(true);
+        // 预检请求缓存时间
+        config.setMaxAge(3600L);
+
+        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+        source.registerCorsConfiguration("/**", config);
+        return new CorsFilter(source);
+    }
+
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+        // 跨域请求配置(作为 CorsFilter 的补充,处理 Spring MVC 层面的 CORS)
+        registry.addMapping("/**")
+                .allowedOrigins("https://www.polypepprotein.com", "https://polypepprotein.com")
+                .allowedMethods("*")
+                .allowedHeaders("*")
+                .allowCredentials(true)
+                .maxAge(3600);
     }
 }

--
Gitblit v1.9.1