Spring Mvc服务器端跨域

如果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,这里复制不上来就不写了

推荐阅读更多精彩内容