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

原文地址:https://www.cnblogs.com/yanxiaoge/p/11756255.html