Browse Source

允许跨域访问

sunyj 8 years ago
parent
commit
45c6df7e54

+ 47 - 0
kanban-console/src/main/java/com/uas/kanban/CORSFilter.java

@@ -0,0 +1,47 @@
+package com.uas.kanban;
+
+import java.io.IOException;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.stereotype.Component;
+
+/**
+ * 跨域访问
+ * 
+ * @author sunyj
+ * @since 2017年9月5日 下午10:45:32
+ */
+@Component
+public class CORSFilter implements Filter {
+
+	@Override
+	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
+			throws IOException, ServletException {
+		HttpServletResponse httpServletResponse = (HttpServletResponse) response;
+		// 不需要限制的域,可以配置多个
+		httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
+		// 允许请求的方法
+		httpServletResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
+		// 表明在3600秒内,不需要再发送预检验请求,可以缓存该结果
+		httpServletResponse.setHeader("Access-Control-Max-Age", "3600");
+		// 表明它允许跨域请求包含x-requested-with头
+		httpServletResponse.setHeader("Access-Control-Allow-Headers", "x-requested-with");
+		chain.doFilter(request, response);
+	}
+
+	@Override
+	public void init(FilterConfig filterConfig) throws ServletException {
+	}
+
+	@Override
+	public void destroy() {
+	}
+
+}

+ 13 - 0
kanban-console/src/main/java/com/uas/kanban/WebAppConfiguration.java

@@ -4,6 +4,9 @@ import java.nio.charset.Charset;
 import java.util.Arrays;
 import java.util.List;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.http.MediaType;
@@ -29,6 +32,9 @@ import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
 @ComponentScan(basePackages = "com.uas.kanban.controller")
 public class WebAppConfiguration extends WebMvcConfigurerAdapter {
 
+	@Autowired
+	private CORSFilter corsFilter;
+
 	@Override
 	public void addResourceHandlers(ResourceHandlerRegistry registry) {
 		// Spring boot默认资源路径在src/main/resources下,而非/src/main/webapp
@@ -71,4 +77,11 @@ public class WebAppConfiguration extends WebMvcConfigurerAdapter {
 		super.configureMessageConverters(converters);
 	}
 
+	@Bean
+	public FilterRegistrationBean filterRegistrationBean() {
+		FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
+		filterRegistrationBean.setFilter(corsFilter);
+		return filterRegistrationBean;
+	}
+
 }