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