From d6a57e584218c585af0fcedfc1d962d08a06c0ce Mon Sep 17 00:00:00 2001 From: whyclxw <810412026@qq.com> Date: 星期四, 23 五月 2024 15:12:42 +0800 Subject: [PATCH] 跨域 --- src/main/resources/config/application-dev.yml | 16 ++ src/main/java/com/whyc/constant/YamlProperties.java | 199 +++++++++++++++++++++++++++++++++ src/main/java/com/whyc/filter/CrossDomainFilter.java | 100 ++++++++++++++++ 3 files changed, 315 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/whyc/constant/YamlProperties.java b/src/main/java/com/whyc/constant/YamlProperties.java new file mode 100644 index 0000000..fd9b18a --- /dev/null +++ b/src/main/java/com/whyc/constant/YamlProperties.java @@ -0,0 +1,199 @@ +package com.whyc.constant; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +/** + * Yaml閰嶇疆鍙傛暟 瀹炰綋绫� + */ +@Component +public class YamlProperties { + + /** + * 杩愯妯″紡:dev,prod + */ + public static String profileType; + + /** + * 绯荤粺绫诲瀷 + * 1:鏅��,娌℃湁澶氶噸鏍¢獙 + * 2:涓ユ牸,鏈夊閲嶆牎楠�(鐧诲綍,闃查噸鏀�,鍙傛暟杩囨护) + */ + public static Integer systemType; + + /**浜鸿劯璇嗗埆瀵规瘮闃堝��*/ + public static Float faceThreshold; + + /**鍛婅鐭俊寮�鍏�*/ + public static String messageSwitch; + public static String messageSecretId; + public static String messageSecretKey; + public static String messageRegion; + public static String messageSdkAppId; + public static String messageSignName; + public static String messageTemplateId; + public static String appId4Win; + public static String sdkKey4Win; + public static String appId4Linux; + public static String sdkKey4Linux; + public static String activeKey; + public static Integer faceType; + + /**鍛婅宸ュ崟寮�鍏�*/ + public static String alarmTaskSwitch; + + /**绯荤粺杩愯妯″紡*/ + public static Integer runModel; + + /**鑷畾涔夊父閲�*/ + public static String fontDynamicCodeSwitch; + public static String allowedCORSDomainList; + public static String restartPasswd; + public static String publicKeyOld; + public static String privateKeyOld; + public static String publicKey; + public static String privateKey; + public static String aesDefaultKey; + public static String aesIv; + public static String i18nLanguage; + + @Value("${spring.profiles.active}") + public void setProfileType(String profileType) { + YamlProperties.profileType = profileType; + } + + @Value("${system.type}") + public void setSystemType(Integer systemType) { + YamlProperties.systemType = systemType; + } + + @Value("${custom.face.threshold}") + private void setFaceThreshold(Float faceThreshold) { + YamlProperties.faceThreshold = faceThreshold; + } + + @Value("${custom.message.switch}") + private void setMessageSwitch(String messageSwitch) { + YamlProperties.messageSwitch = messageSwitch; + } + + @Value("${custom.message.secret_id}") + private void setMessageSecretId(String messageSecretId) { + YamlProperties.messageSecretId = messageSecretId; + } + + @Value("${custom.message.secret_key}") + private void setMessageSecretKey(String messageSecretKey) { + YamlProperties.messageSecretKey = messageSecretKey; + } + + @Value("${custom.message.region}") + private void setMessageRegion(String messageRegion) { + YamlProperties.messageRegion = messageRegion; + } + + @Value("${custom.message.smsSdkAppId}") + private void setMessageSdkAppId(String messageSdkAppId) { + YamlProperties.messageSdkAppId = messageSdkAppId; + } + + @Value("${custom.message.signName}") + private void setMessageSignName(String messageSignName) { + YamlProperties.messageSignName = messageSignName; + } + + @Value("${custom.message.templateId}") + private void setMessageTemplateId(String messageTemplateId) { + YamlProperties.messageTemplateId = messageTemplateId; + } + + @Value("${custom.alarm.task.switch}") + private void setAlarmTaskSwitch(String alarmTaskSwitch) { + YamlProperties.alarmTaskSwitch = alarmTaskSwitch; + } + + @Value("${custom.face.appId4Win}") + private void setAppId4Win(String appId4Win) { + YamlProperties.appId4Win = appId4Win; + } + + @Value("${custom.face.sdkKey4Win}") + private void setSdkKey4Win(String sdkKey4Win) { + YamlProperties.sdkKey4Win = sdkKey4Win; + } + + @Value("${custom.face.appId4Linux}") + private void setAppId4Linux(String appId4Linux) { + YamlProperties.appId4Linux = appId4Linux; + } + + @Value("${custom.face.sdkKey4Linux}") + private void setSdkKey4Linux(String sdkKey4Linux) { + YamlProperties.sdkKey4Linux = sdkKey4Linux; + } + + @Value("${custom.face.activeKey}") + private void setActiveKey(String activeKey) { + YamlProperties.activeKey = activeKey; + } + + @Value("${custom.face.type}") + public void setFaceType(Integer faceType) { + YamlProperties.faceType = faceType; + } + + @Value("${custom.fontDynamicCode}") + public void setFontDynamicCodeSwitch(String fontDynamicCodeSwitch) { + YamlProperties.fontDynamicCodeSwitch = fontDynamicCodeSwitch; + } + + @Value("${configFile.type}") + public void setRunModel(Integer runModel) { + YamlProperties.runModel = runModel; + } + + @Value("${custom.cors}") + public void setAllowedCORSDomainList(String allowedCORSDomainList) { + YamlProperties.allowedCORSDomainList = allowedCORSDomainList; + } + + @Value("${custom.restartPasswd}") + public void setRestartPasswd(String restartPasswd) { + YamlProperties.restartPasswd = restartPasswd; + } + + @Value("${custom.rsa.publicKeyOld}") + public void setPublicKeyOld(String publicKeyOld) { + YamlProperties.publicKeyOld = publicKeyOld; + } + + @Value("${custom.rsa.privateKeyOld}") + public void setPrivateKeyOld(String privateKeyOld) { + YamlProperties.privateKeyOld = privateKeyOld; + } + + @Value("${custom.rsa.publicKey}") + public void setPublicKey(String publicKey) { + YamlProperties.publicKey = publicKey; + } + + @Value("${custom.rsa.privateKey}") + public void setPrivateKey(String privateKey) { + YamlProperties.privateKey = privateKey; + } + + @Value("${custom.aes.defaultKey}") + public void setAesDefaultKey(String aesDefaultKey) { + YamlProperties.aesDefaultKey = aesDefaultKey; + } + + @Value("${custom.aes.iv}") + public void setAesIv(String aesIv) { + YamlProperties.aesIv = aesIv; + } + + @Value("${custom.i18n}") + public void setI18nLanguage(String i18nLanguage) { + YamlProperties.i18nLanguage = i18nLanguage; + } +} diff --git a/src/main/java/com/whyc/filter/CrossDomainFilter.java b/src/main/java/com/whyc/filter/CrossDomainFilter.java new file mode 100644 index 0000000..ada0dd0 --- /dev/null +++ b/src/main/java/com/whyc/filter/CrossDomainFilter.java @@ -0,0 +1,100 @@ +package com.whyc.filter; + +import com.whyc.constant.YamlProperties; +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.*; +import javax.servlet.annotation.WebFilter; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +/** + * @Description : + * @date 2020/09/11 + **/ +@WebFilter +public class CrossDomainFilter implements Filter { + + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + System.out.println("鎵ц浜嗚繃婊ゅ櫒CrossDomainFilter"); + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + HttpServletResponse resp= (HttpServletResponse) response; + HttpServletRequest req= (HttpServletRequest) request; + String origin = req.getHeader("Origin"); + if(StringUtils.isNotBlank(origin)) { //娌℃湁origin鏉ユ簮,涓嶅厑璁歌法鍩熻缃� + String allowedCORSDomainList = YamlProperties.allowedCORSDomainList; + List<String> allowedList = new LinkedList<>(); + if (!allowedCORSDomainList.equals("")) { //瀛樺湪璺ㄥ煙鐧藉悕鍗�,鍒ゆ柇,璁剧疆 + String[] allowedCORSDomain = allowedCORSDomainList.split(","); + allowedList = Arrays.asList(allowedCORSDomain); + if (allowedList.contains(origin)) { + resp.setHeader("Access-Control-Allow-Origin", origin); + resp.setHeader("Access-Control-Allow-Headers", "X-Requested-With,content-type,token"); + //resp.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH"); + //resp.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, PATCH"); + resp.setHeader("Access-Control-Allow-Methods", "GET, POST"); + resp.setHeader("Access-Control-Allow-Credentials", "true"); + } + } + } + + //鍙噯浣跨敤GET,POST + String method = req.getMethod().toUpperCase(); + String profileType = YamlProperties.profileType; + if(!profileType.contains("dev") && !(method.equals("GET")||method.equals("POST"))){ + resp.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED); + response.setContentType("text/html;charset=utf-8"); + response.getWriter().write("涓嶅畨鍏ㄧ殑璇锋眰"); + return; + } + //澶勭悊鍝嶅簲澶寸己澶�,淇℃伅婕忔礊 + /*resp.addHeader("X-Frame-Options","SAMEORIGIN"); + resp.addHeader("Referrer-Policy","origin"); + resp.addHeader("Content-Security-Policy","object-src 'self'"); + resp.addHeader("X-Permitted-Cross-Domain-Policies","master-only"); + resp.addHeader("X-Content-Type-Options","nosniff"); + resp.addHeader("X-XSS-Protection","1; mode=block"); + resp.addHeader("X-Download-Options","noopen"); + resp.addHeader("Strict-Transport-Security","max-age=63072000; includeSubdomains; preload");*/ + resp.setHeader("X-Frame-Options","SAMEORIGIN"); + resp.setHeader("Referrer-Policy","origin"); + resp.setHeader("Content-Security-Policy","object-src 'self'"); + resp.setHeader("X-Permitted-Cross-Domain-Policies","master-only"); + resp.setHeader("X-Content-Type-Options","nosniff"); + resp.setHeader("X-XSS-Protection","1; mode=block"); + resp.setHeader("X-Download-Options","noopen"); + resp.setHeader("Strict-Transport-Security","max-age=63072000; includeSubdomains; preload"); + + //鍗曢〉闈㈠簲鐢�,鍙厑璁镐竴涓〉闈ndex.html + String servletPath = req.getServletPath(); + if(servletPath.contains(".html")){ + if(!servletPath.equals("/index.html") && !servletPath.equals("/doc.html") && !servletPath.equals("/mobile/index.html")){ + resp.setStatus(202); + return; + } + HttpServletRequestWrapper wrapper = new HttpServletRequestWrapper((HttpServletRequest)req); + if(servletPath.equals("/index.html") && req.getParameter("n") == null) { + RequestDispatcher dispatcher = wrapper.getRequestDispatcher("/"); + dispatcher.forward(request, resp); + return; + } + } + + chain.doFilter(request, resp); + } + + @Override + public void destroy() { + + } +} diff --git a/src/main/resources/config/application-dev.yml b/src/main/resources/config/application-dev.yml index ae27384..6ec5b1d 100644 --- a/src/main/resources/config/application-dev.yml +++ b/src/main/resources/config/application-dev.yml @@ -74,3 +74,19 @@ community: public retries: 1 timeout: 5000 +custom: + #鐧诲綍楠岃瘉鐮� on/off + fontDynamicCode: on + #鍏佽璺ㄥ煙鐨勭櫧鍚嶅崟 http://192.168.10.132:8080,http://192.168.10.109:8080 + cors: http://localhost:8080,http://192.168.10.114:8080,,http://192.168.10.86:8080 + #閲嶅惎瀵嗙爜 + restartPasswd: ENC(AKxTGQo6bAABeC62B8Dtxw==) + rsa: + publicKeyOld: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCPpJ3j+SHQ69lqq+ShV7deA40Y+8rYra6rr4ReOJ+UE7ek8tsJJrcy1xMO1SophJdHXXwSNbZWhnJW9GlIq1Um6IplkwFc/AtyoeJDP3EJtUZgI5H6fSz0BPLFHn18C0Nxz1Br109U07DqQdMsarcBmKXYQw+2oZOz0KpA5b0FawIDAQAB + privateKeyOld: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAI+kneP5IdDr2Wqr5KFXt14DjRj7ytitrquvhF44n5QTt6Ty2wkmtzLXEw7VKimEl0ddfBI1tlaGclb0aUirVSboimWTAVz8C3Kh4kM/cQm1RmAjkfp9LPQE8sUefXwLQ3HPUGvXT1TTsOpB0yxqtwGYpdhDD7ahk7PQqkDlvQVrAgMBAAECgYA8ASdX4W2n6a4kKnRSleLqqg8aHazqAPvTinmAJqU65VW02SJ42yxyV3gFnTSErXfIfxviO3/U+0ruWiFVEwV5oDEh0dOd+HHGm4YzFXIRglMeRBgLuVJ+owzoVDwZstiIBa69DIjaJtmpSf5FjwxAth+gtCv3e11IXHraKN720QJBAMPMB1WtmpRGYHxWVYjKSL+RGw+h3gMQLk3exZjhmYRlXuqfVZ2Zol+NazDc59K5f+geMdJ0/X2kKnKLVjWzYHMCQQC7z1cFYswtLemxGfj+dwlVC01VL4pKa7HGHl/FAQ2UNYZY2d5hE/nXYbTpfI0gMowX926/aFpia7NbAUJO7WEpAkAyUFa+LJthaOhYazMVsK2bFKW4kabkcJ8Fga6TR73UaNxIPGOa2SUBmuylpM6ptuNoeYHiDBAr3ijOQIIJ0KuDAkBy9fPahCNe9F+73J4hhVPdDtIDdto7u7hSAX215XMeabUW5iXNXqDsSg6nbWolb0t50CemWoYZALwE1Lx1+7AhAkEAoZtFt+2skjAxHEqNUye4vKBqB2Ng/wmfitCfT34lXWQsxs4BGk/8eQMzkam9bcB7FcinolxHF/1UjsUYpI+AgA== + publicKey: MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAu7CdCMIoWXUX584JpmE1bTE1r1MtmZGswsSbsm4s9zqETQ4BmUT2kz/wvvGsI8T3ZvTT4KIyKP4Ez+yNVejMM5XwR95KF4e3UwMc724buWKl4pVL09kvkCZt8ZKf359VAvhyHHz80wIiVmJs6xbho7OBsv/s7Hwho0n4HPL4u/eNR5vWa2rtgQG1+fi1XP0UiSRKKW15Va9R2CI3zB+sffquhyX5fi+06NibWzk7OPU+EGvAwkaJtrmfLAvpwr4+G0MBLIsPVFV17Sgpoj62rtfbhHwmLSo1JTw+/JskDQOjxXfw+w3uHAZgPTlEmn2Ya9ssIljqCBfvM9nbGUWcnmppKlPm6kECa4RsgPiRgPFV+nT/Q98kfUTb798Sy63x4NIZkLQn1DDbmcAgUqLR6y1r0fD8Ne3vVtuZlVR/8ZlcRAfb+th2cNN0rytrnUreJo7kPtTFdkNtmj0KdUkRO8ea0YymEQal+b0tCl3V8osSy+qO2OVRd7yCvpOWEYOBAgMBAAE= + privateKey: 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 + aes: + defaultKey: ENC(KdXXhvt6v7BDw7MgsR4J1OgahZgjl3kEil10+147oGA=) + iv: ENC(Gtzf6s+BRoC1iQsRLMswSlBDSMom0kWtx5+SMJgaVDg=) + i18n: zh-CN -- Gitblit v1.9.1