| package com.sinata.zuul.util; | 
|   | 
|   | 
| 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() { | 
|   | 
|     } | 
| } |