New file |
| | |
| | | package com.cl.filter; |
| | | |
| | | |
| | | 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() { |
| | | |
| | | } |
| | | } |