通过定义过滤器filter解决跨域问题

        跨域是比较常见问题,比较简单的方式就是直接定义一个过滤器filter,然后在请求头里面加上一些参数。下面来看看具体的写法吧。

一、java代码

package com.hj.userapi.core.filter;

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;

/**
 * 功能描述:解决跨域过滤器 
 * 2017年9月4日
 */
public class ContextFilter implements Filter{
    private final int time = 20*24*60*60;
    /**
     * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
     */
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // TODO Auto-generated method stub
        
    }

    /**
     * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
     */
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse resp = (HttpServletResponse) response;
        // 添加参数,允许任意domain访问
        resp.setHeader("Access-Control-Allow-Origin", "*");
        // 这个allow-headers要配为*,这样才能允许所有的请求头 --- update by zxy  in 2018-10-19
        resp.setHeader("Access-Control-Allow-Headers", "*");
        resp.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
        resp.setHeader("Access-Control-Max-Age", time+"");
        chain.doFilter(request, resp);
    }

    /**
     * @see javax.servlet.Filter#destroy()
     */
    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        
    }

}

二、web.xml中的配置

	<filter>
	    <filter-name>contextFilter</filter-name>
	    <filter-class>com.hj.userapi.core.filter.ContextFilter</filter-class>
	</filter>
	<filter-mapping>
	    <filter-name>contextFilter</filter-name>
	    <url-pattern>/*</url-pattern>
	</filter-mapping>

三、小结

        碰到跨域问题时,可以通过自定义过滤器,然后在请求头上添加参数来解决。

posted @ 2018-04-10 14:05  zeng1994  阅读(9020)  评论(0编辑  收藏  举报