如果mvc框架是spring4.2以上的话,一个@CrossOrigin就可以搞定。将@CrossOrigin加到Controller上,那么这个Controller所有的请求都是支持跨域的,将@CrossOrigin加到请求方法上,那么这个请求是支持跨域的。
Spring mvc服务器mvc框架spring4.2以下服务器端跨域需要些filter
@Override
public void doFilter(ServletRequest request, ServletResponse responseabc, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse response =(HttpServletResponse) responseabc;
/*
*/
response.setHeader("Access-Control-Allow-Origin", "Authentication");
/*
* 指明资源可以被请求的方式有哪些(一个或者多个). 这个响应头信息在客户端发出预检请求的时候会被返回
*/
response.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE");
/*
* 设置浏览器允许访问的服务器的头信息的白名单
*/
response.setHeader("Access-Control-Allow-Headers", "Origin,X-Requested-With,Content-Type,Authorization,Accept, No-Cache, If-Modified-Since,Last-Modified, Cache-Control, Expires, X-E4M-With,ticket");
/*
* 默认情况下,跨源请求不提供凭据(cookie、HTTP认证及客户端SSL证明等)。
* 通过将withCredentials属性设置为true,可以指定某个请求应该发送凭据。如果服务器接收带凭据的请求,会用下面的HTTP头部来响应
* 如果发送的是带凭据的请求,但服务器的相应中没有包含这个头部,那么浏览器就不会把相应交给JavaScript(于是,responseText中将是空字符串,status的值为0,而且会调用onerror()事件处理程序)
*/
response.setHeader("Access-Control-Allow-Credentials", "true");
/*
* 一次预请求的结果的有效时间(秒),在该时间内不再发送预请求
*/
response.setHeader("Access-Control-Max-Age", "2592000");
chain.doFilter(request, response);
}
同事web.xml需要配置filter,这里复制不上来就不写了