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.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * * @ClassName: CorsFilter * @Description: TODO(跨域哀求过滤器) * @author clm * @date 2019年10月25日 * */ public class CorsFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { /* * 跨域哀求头处事端设置: * 1.Access-Control-Allow-Origin:配置应承跨域的设置, 相应头指定了该相应的资源是否被应承与给定的origin共享 * 2.Access-Control-Allow-Credentials:相应头暗示是否可以将对哀求的相应袒露给页面(cookie)。返回true则可以,其他值均不行以。 * 3.Access-Control-Allow-Headers:用于预检哀求中,列出了将会在正式哀求的 Access-Control-Request-Headers 字段中呈现的首部信息。(自界说哀求头) * 4.Access-Control-Allow-Methods:在对 预检哀求的应答中明晰了客户端所要会见的资源应承行使的要领或要领列表。 */ HttpServletRequest httpRequest = (HttpServletRequest) servletRequest; HttpServletResponse httpResponse = (HttpServletResponse) servletResponse; //配置应承多个域名应承跨域荟萃 String[] allowDomains = {"http://czt.casicloud.com", "http://czt.ming.com"}; Set<String> allowOrigins = new HashSet<String>(Arrays.asList(allowDomains)); String origin = httpRequest.getHeader("Origin"); if(allowOrigins.contains(origin)){ //配置应承跨域的设置:Access-Control-Allow-Origin: 相应头指定了该相应的资源是否被应承与给定的origin共享 httpResponse.setHeader("Access-Control-Allow-Origin", origin); } httpResponse.setHeader("Access-Control-Allow-Credentials", "true"); httpResponse.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, access-token"); httpResponse.setHeader("Access-Control-Allow-Methods", "GET, PUT, DELETE, POST, OPTIONS"); if (httpRequest.getMethod().equalsIgnoreCase("OPTIONS")) { httpResponse.setStatus(202); httpResponse.getWriter().close(); return; } filterChain.doFilter(servletRequest, servletResponse); }
@Override public void destroy() { }
@Override public void init(FilterConfig filterConfig) throws ServletException { }
}
web.xml中设置过滤器:
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|