继承Filter实现一个自己的跨域请求的Filter
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Slf4j
public class MyCorsFilter implements Filter {
public MyCorsFilter() {
log.info(">>>>>> CorsFilter init");
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
if (request.getHeader("Origin") != null) {
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
} else {
response.setHeader("Access-Control-Allow-Origin", "*");
}
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");
chain.doFilter(req, resp);
}
@Override
public void init(FilterConfig filterConfig) {
}
@Override
public void destroy() {
}
}
注册自定义filter
@Bean(name = "corsFilter")
public FilterRegistrationBean corsFilterRegistrationBean() {
final FilterRegistrationBean registrationBean = new FilterRegistrationBean();
final MyCorsFilter corsFilter = new MyCorsFilter();
registrationBean.setFilter(corsFilter);
registrationBean.setOrder(Integer.MIN_VALUE);
return registrationBean;
}