From 78bfb29d03a127cd6961ad5e99a396ec8f4e8668 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 24 六月 2025 09:09:31 +0800
Subject: [PATCH] 配置跨域过滤器

---
 src/main/java/com/cl/filter/CrossOriginFilter.java |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/main/resources/application-dev.yml             |    1 +
 src/main/resources/application-prod.yml            |    2 ++
 3 files changed, 57 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/cl/filter/CrossOriginFilter.java b/src/main/java/com/cl/filter/CrossOriginFilter.java
new file mode 100644
index 0000000..93f73e8
--- /dev/null
+++ b/src/main/java/com/cl/filter/CrossOriginFilter.java
@@ -0,0 +1,54 @@
+package com.cl.filter;
+
+
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.*;
+import javax.servlet.annotation.WebFilter;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * 统一配置跨域处理
+ */
+@Order(-100)
+@Component
+@ServletComponentScan
+@WebFilter(urlPatterns = "/*",filterName = "crossOriginFilter")
+public class CrossOriginFilter implements Filter {
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+
+    }
+
+    @Override
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+        HttpServletResponse response = (HttpServletResponse) servletResponse;
+        HttpServletRequest request = (HttpServletRequest) servletRequest;
+        // 允许哪些Origin发起跨域请求
+        // response.setHeader( "Access-Control-Allow-Origin", config.getInitParameter( "AccessControlAllowOrigin" ) );
+        response.setHeader( "Access-Control-Allow-Origin", "*" );
+        // 允许请求的方法
+        response.setHeader( "Access-Control-Allow-Methods", "POST,GET,OPTIONS,DELETE,PUT" );
+        //多少秒内,不需要再发送预检验请求,可以缓存该结果
+        response.setHeader( "Access-Control-Max-Age", "3600" );
+        // 表明它允许跨域请求包含xxx头
+        response.setHeader( "Access-Control-Allow-Headers", "x-auth-token,Origin,Access-Token,X-Requested-With,Content-Type, Accept, Authorization" );
+        //是否允许浏览器携带用户身份信息(cookie)
+        response.setHeader( "Access-Control-Allow-Credentials", "true" );
+        //prefight请求
+        if (request.getMethod().equals( "OPTIONS" )) {
+            response.setStatus( 204 );
+            return;
+        }
+        filterChain.doFilter( servletRequest, response );
+    }
+
+    @Override
+    public void destroy() {
+
+    }
+}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index d986e1e..0fc5912 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -4,6 +4,7 @@
 spring:
   main:
     allow-circular-references: true
+    allow-bean-definition-overriding: true
   datasource:
       url: jdbc:mysql://127.0.0.1:3306/canlian?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
       username: root
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 60e9cdc..845c11b 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -4,6 +4,8 @@
 spring:
   main:
     allow-circular-references: true
+    allow-bean-definition-overriding: true
+
   datasource:
       url: jdbc:mysql://172.192.3.1:3306/canlian?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
       username: remote

--
Gitblit v1.7.1