java过滤器解决跨域问题

1.新建过滤器CORSFilter

public class CORSFilter 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;
        //此处ip地址为需要访问服务器的ip及端口号 也可以设置为*表示所有域都可以通过;
        response.setHeader("Access-Control-Allow-Origin", "*");
        //表示的是跨域的ajax中可以携带cookie,此时第一项设置不能为*,需指定域名;
        response.setHeader("Access-Control-Allow-Credentials", "true");
        //表示的是允许跨域的请求方法;
        response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");
        //表示的是允许跨域请求包含content-type头;
        response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type,Authorization,Token,Accept, Connection, User-Agent, Cookie");
        //表示的是在3628800秒内,不需要再发送预检验请求,可以缓存该结果,一般默认。
        response.setHeader("Access-Control-Max-Age", "3628800");

        System.out.println("设置跨域请求");
        filterChain.doFilter(servletRequest, response);
    }

    @Override
    public void destroy() {

    }
}

2.在web.xml中配置过滤器

<!-- 跨域设置 -->
  <filter>
    <filter-name>corsFilter</filter-name>
    <filter-class>com.baixingyuan.filter.CORSFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>corsFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
发布了33 篇原创文章 · 获赞 0 · 访问量 371

猜你喜欢

转载自blog.csdn.net/weixin_43596905/article/details/104865278