今天看到了一个解决跨域问题的方法,感觉挺方便的,记录一下,
1.首先需要创建一个filter:
public class CorsFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
// TODO Auto-generated method stub
HttpServletResponse res = (HttpServletResponse) response;
res.setContentType("text/html;charset=UTF-8");
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
res.setHeader("Access-Control-Max-Age", "0");
res.setHeader("Access-Control-Allow-Headers",
"Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token");
res.setHeader("Access-Control-Allow-Credentials", "true");
res.setHeader("XDomainRequestAllowed", "1");
chain.doFilter(request, response);
}
public void destroy() {
// TODO Auto-generated method stub
}
}
Access-Control-Allow-Origin 字段的值可以自行设置,为*的话则是任何地址都可以访问进来,如果不想这样,则设置为你想让访问的路径就可以了。其他的值都不需要修改。
2.在web.xml配置文件中配置一下
<filter>
<filter-name>cors</filter-name>
<filter-class>com.rf.interceptor.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>cors</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
filter-class指向的路径就是filter类的路径。
这样配置之后就可以解决跨域访问的问题,前端不需要做任何操作,是不是很方便。