服务端解决跨域方法

服务端解决跨域方法

java服务器端解决跨域问题:现在很多开发的API都支持ajax直接请求,这样就会导致跨域的问题,解决跨域的问题一方面可以从前端,另一方面就是服务器端。

 

解决方式,filter。我们在写springMVC的时候,更喜欢的方式是通过@ResponseBody给返回对象进行封装直接返回给前端,这样简单而且容易。

如果使用@ResponseBody就不能使用第一种方法了,所有就使用filter给所有的请求都封装一下跨域,接下来直接实现代码:

实现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;

 

public class HeadersCORSFilter implements Filter {

 

    @Override

    public void init(FilterConfig filterConfig) throws ServletException {

        // TODO Auto-generated method stub

 

    }

 

    @Override

    public void doFilter(ServletRequest request, 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");

            response.setHeader("Access-Control-Max-Age", "3600");

            response.setHeader("Access-Control-Allow-Headers", "x-requested-with,Authorization");

            response.setHeader("Access-Control-Allow-Credentials","true");

            chain.doFilter(request, servletResponse);

 

    }

 

    @Override

    public void destroy() {

        // TODO Auto-generated method stub

 

    }

 

}

 

好了,filter实现了,然后就是要在web.xml里面把这个filter运用起来了。
打开项目的web.xml,填写下面的几行代码:

配置web.Xml如下:

  cors

  xxx.xxxx.xxxxx.xxxx.HeadersCORSFilter

  cors

  /open/*

 

 

 

 

你可能感兴趣的:(服务端解决跨域方法)