同源策略
ajax访问的地址和浏览器访问的域名地址不一致,就会出现跨域的问题。但是其实请求已经发出,并且服务器已经返回了数据,只是浏览器处于安全考虑,会拦截这个数据。
解决
1、使用jsonp(只支持get请求,不支持post请求,不推荐使用)
修改ajax
修改后台
2、使用HTTPClient进行转发(会发送两次请求,效率较低)
第一次请求,通过ajax发送到项目A后台
再在后台通过HttpClient进行转发,其实就不是跨域问题了,跨域是针对前台发送的请求。
3、设置响应头允许跨域(推荐)
很简单,在被访问的项目B接口上添加一个代码,设置一个响应头的参数即可,*表示所有的域名都是允许跨域的,此代码应该放在过滤器中。
或者使用注解
@CrossOrigin(value = "http://localhost:8081") @ResponseBody @RequestMapping("login") public JsonResult login()