restful风格下的ajax跨域问题的解决

Ajax跨域请求时,如果设置Header的ContentType为application/json,会分两次发送请求
一次先发送Method为OPTIONS的请求到服务器,这个请求会询问服务器支持哪些请求方法(GET,POST等)
一次先发送Method为OPTIONS的请求到服务器,这个请求会询问服务器支持哪些请求方法(GET,POST等)
等到这个请求返回后,如果原来我们准备发送的请求符合服务器的规
则,那么才会继续发送第二个请求

protected boolean preHandle(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception {
  HttpServletRequest request = (HttpServletRequest) servletRequest;
  HttpServletResponse response = (HttpServletResponse) servletResponse;
  if (request.getMethod().equals(RequestMethod.OPTIONS.name())) {
  response.setStatus(HttpStatus.OK.value());
  response.addHeader("Access-Control-Allow-Origin", "*");
  response.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS, TRACE, HEAD, PATCH");
  response.addHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
  return false;
}
  return super.preHandle(request, response);
}
原文地址:https://www.cnblogs.com/lwmp/p/6253501.html