Spring RestController的跨域ajax请求问题

我遇到了Ajax跨域请求的问题。

以下是我的弹簧控制器的代码:

@RestController

@RequestMapping(value = "/help")

public class MYController {

@Autowired

private MyService myService;

private static final int SUCCESS = 1;

private static final int FAIL = 0;

@RequestMapping(value = "save", method = RequestMethod.POST,produces={"application/json"})

public int save(@RequestBody Item item,HttpServletRequest request,HttpServletResponse response) {

response.addHeader("Access-Control-Allow-Origin","*");

response.addHeader("Access-Control-Allow-Methods","GET, PUT, POST, DELETE, OPTIONS");

response.addHeader("Access-Control-Allow-Headers","Content-Type, Content-Range, Content-Disposition, Content-Description");

try {

myService.save(item);

return SUCCESS;

} catch (Exception ex) {

ex.printStackTrace();

return FAIL;

}

}

}

上面的代码是我的REST服务的一部分,它在其他tomcat上运行。

以下是我的脚本代码,这是我的客户代码。

$.ajax({

type: "POST",

url:"http://10.10.13.215:9092/helpProject/help/save",

crossDomain: true,

dataType: "JSON",

data:JSON.stringify(item), //item is my pojo here

headers : {Accept : "applicationjson","Access-Control-Allow-Origin" : "*"},

success: function(msg) {

alert(msg);

},

error: function (e) {

alert("errorrrrrr");

}

});

我在浏览器的控制台中遇到以下错误:

XMLHttpRequest cannot load http://10.10.13.215:9092/helpProject/help/save",

No 'Access-Control-Allow-Origin' header is present on the requested resource.

Origin 'http://localhost:8082' is therefore not allowed access.

请帮助解决..谢谢

回答:

尝试添加此过滤器。

@Component

public class CorsFilter implements Filter {

@Override

public void init(FilterConfig filterConfig) throws ServletException {

// TODO Auto-generated method stub

}

@Override

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

HttpServletResponse res = (HttpServletResponse) response;

res.setHeader("Access-Control-Allow-Origin", "*");

res.setHeader("Access-Control-Allow-Methods",

"POST, GET, OPTIONS, DELETE");

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

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

chain.doFilter(request, res);

}

@Override

public void destroy() {

// TODO Auto-generated method stub

}

}

以上是 Spring RestController的跨域ajax请求问题 的全部内容, 来源链接: utcz.com/qa/419050.html

回到顶部