Springmvc自定义过滤器Filter,解决跨域问题

来源:互联网 发布:淘宝投诉盗图原图太大 编辑:程序博客网 时间:2024/06/03 16:40
public class CrossFilter extends OncePerRequestFilter {


@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
        if (request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())) {
            // CORS "pre-flight" request
            response.addHeader("Access-Control-Allow-Origin", "*");
            response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
            response.addHeader("Access-Control-Allow-Headers", "Content-Type");
            response.addHeader("Access-Control-Max-Age", "1800");//30 min
        }
        filterChain.doFilter(request, response);

    }


利用Access-Control-Allow-Origin设置response响应头来实现跨域访问,

如果它的值设为 * ,则表示所有域都可以访问


spring版本号4.1以上



web.xml

 <filter>
    <filter-name>cors</filter-name>
    <filter-class>com.flame.util.CrossFilter</filter-class>
 </filter>
 <filter-mapping>
    <filter-name>cors</filter-name>
    <url-pattern>/*</url-pattern>
 </filter-mapping>