Prechádzať zdrojové kódy

换了个套路解决跨域

menglu 3 rokov pred
rodič
commit
e17bc709d2

+ 2 - 0
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/Application_ibms_data_sdk.java

@@ -2,10 +2,12 @@ package com.persagy.ibms.data.sdk.service;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
 @SpringBootApplication
 @EnableScheduling
+@ServletComponentScan
 public class Application_ibms_data_sdk {
 
 	public static void main(String[] args) throws Exception {

+ 41 - 0
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/CrossOriginFilter.java

@@ -0,0 +1,41 @@
+package com.persagy.ibms.data.sdk.service;
+
+import org.springframework.core.annotation.Order;
+
+import javax.servlet.*;
+import javax.servlet.annotation.WebFilter;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Order(1)
+@WebFilter
+public class CrossOriginFilter implements Filter {
+
+	@Override
+	public void init(FilterConfig filterConfig) {
+
+	}
+
+	@Override
+	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
+			throws IOException, ServletException {
+		HttpServletResponse response = (HttpServletResponse) servletResponse;
+		// 表示允许 origin 发起跨域请求。
+		response.addHeader("Access-Control-Allow-Origin", "*");
+		// GET,POST,OPTIONS,PUT,DELETE 表示允许跨域请求的方法
+		response.addHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, DELETE");
+		// 支持所有自定义头
+		response.addHeader("Access-Control-Allow-Headers", "*");
+		// 表示在3600秒内不需要再发送预校验请求
+		response.addHeader("Access-Control-Max-Age", "3600");
+		// 允许cookie
+		response.addHeader("Access-Control-Allow-Credentials", "true");
+
+		filterChain.doFilter(servletRequest, response);
+	}
+
+	@Override
+	public void destroy() {
+
+	}
+}

+ 0 - 33
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/GlobalCorsConfig.java

@@ -1,33 +0,0 @@
-package com.persagy.ibms.data.sdk.service;
-
-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;
-
-@Configuration
-public class GlobalCorsConfig {
-	@Bean
-	public CorsFilter corsFilter() {
-		// 1.添加CORS配置信息
-		CorsConfiguration config = new CorsConfiguration();
-		// 放行哪些原始域
-		config.addAllowedOrigin("*");
-		// 是否发送Cookie信息
-		config.setAllowCredentials(true);
-		// 放行哪些原始域(请求方式)
-		config.addAllowedMethod("*");
-		// 放行哪些原始域(头部信息)
-		config.addAllowedHeader("*");
-		// 暴露哪些头部信息(因为跨域访问默认不能获取全部头部信息)
-		// config.addExposedHeader("*");
-
-		// 2.添加映射路径
-		UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
-		configSource.registerCorsConfiguration("/**", config);
-
-		// 3.返回新的CorsFilter.
-		return new CorsFilter(configSource);
-	}
-}