Java配置过滤器,并解决跨域的问题

1、web.xml配置filter

<filter>
    <filter-name>SystemInterceptor</filter-name>
    <filter-class>com.yk.interceptor.SystemInterceptor</filter-class>
  </filter>
  <!--映射过滤器-->
  <filter-mapping>
    <filter-name>SystemInterceptor</filter-name>
    <!--“/*”表示拦截所有的请求 -->
    <url-pattern>/*</url-pattern>
  </filter-mapping>

2、在com.yk.interceptor包下创建类SystemInterceptor

package com.yk.interceptor;

import java.io.IOException;

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.HttpServletResponse;

public class SystemInterceptor implements Filter{

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
			throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        response.setHeader("Access-Control-Allow-Origin", "*"); //  这里最好明确的写允许的域名
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "Content-Type,Access-Token,Authorization,ybg");
        chain.doFilter(servletRequest, servletResponse);
        System.out.println("filter==========================");
		
	}

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

}

因为在web.xml中的<url-pattern>配置的是/*拦截所有请求,所以每个请求都会执行SystemInterceptor中的doFilter方法

        HttpServletResponse response = (HttpServletResponse) servletResponse;
        response.setHeader("Access-Control-Allow-Origin", "*"); //  这里最好明确的写允许的域名
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "Content-Type,Access-Token,Authorization,ybg");
        chain.doFilter(servletRequest, servletResponse);

上述是解决跨域问题的代码,*是允许所有域名

 


版权声明:本文为weixin_41251573原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。