skyfffire 2 miesięcy temu
rodzic
commit
30b40801d9

BIN
src/doc/《NFT数字藏品平台开发合同》.docx


BIN
src/doc/技术实现奖励制度.docx


+ 33 - 0
src/main/java/common/handler/AllCorsHandler.java

@@ -0,0 +1,33 @@
+package common.handler;
+
+import com.jfinal.handler.Handler;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 全局 CORS 处理器,允许所有来源的跨域请求。
+ * ⚠️ 仅用于开发和测试环境,生产环境请勿直接使用 '*'
+ * 而是应该指定具体的 allowedOrigin。
+ */
+public class AllCorsHandler extends Handler {
+    @Override
+    public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
+        // 设置所有响应头字段,允许所有来源的跨域
+        response.setHeader("Access-Control-Allow-Origin", "*"); // 允许所有来源
+        response.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS"); // 允许所有常用方法
+        response.setHeader("Access-Control-Allow-Headers", "Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,dl-token,dl_token"); // 允许所有常用头
+        response.setHeader("Access-Control-Max-Age", "3600"); // 预检请求缓存时间为 1 小时
+        response.setHeader("Access-Control-Allow-Credentials", "true"); // 允许发送 Cookie 等凭证(如果前端有发送,这里也要允许)
+
+        // 处理 OPTIONS 预检请求
+        if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
+            response.setStatus(HttpServletResponse.SC_OK); // 浏览器收到 200 OK 就会继续发送实际请求
+            isHandled[0] = true; // 拦截请求,不再往下执行 Controller,直接返回
+            return; // 结束方法执行
+        }
+
+        // 继续执行后续的 Handler 和 Controller
+        next.handle(target, request, response, isHandled);
+    }
+}

+ 2 - 1
src/main/java/common/jfinal/AppConfig.java

@@ -5,6 +5,7 @@ import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
 import com.jfinal.plugin.druid.DruidPlugin;
 import com.jfinal.server.undertow.UndertowServer;
 import com.jfinal.template.Engine;
+import common.handler.AllCorsHandler;
 import common.interceptor.AuthInterceptor;
 import common.interceptor.ExceptionInterceptor;
 import common.interceptor.empty.EmptyInterceptor;
@@ -72,6 +73,6 @@ public class AppConfig extends JFinalConfig {
 
     @Override
     public void configHandler(Handlers handlers) {
-
+        handlers.add(new AllCorsHandler());
     }
 }