当一个域访问另一个域的资源时,这时候就会出现跨域问题。比如说前后端分离的项目,前端访问后端,这时候就存在着跨域。如果不解决这个问题,那我们是无法访问资源的。

    那什么会出现跨域呢?主要有三方面的原因:1.浏览器的限制。2跨域。3.XHR(XMLHttpRequest)请求。

    那针对这三个原因我们也可以相应的从三个方面去解决。

1.让浏览器不再进行限制,指定参数可以实现。价值不大。因为需要客户端修改,这样就需要每个用户都修改,不现实。

AJAX跨域

AJAX跨域

2.不发生XHR请求,发生JSONP类型的请求,但是也不建议用,因为有很多弊端,无法满足现在的开发要求。

AJAX跨域

需要改动后台代码

AJAX跨域

jsonp是一个非官方协议,callback就是他们的协议,当后台收到这个协议,他就不返回json数据了,而是返回一段js代码

jsonp的弊端:

2.1:服务器需要改动代码。2.2:只支持get.2.3:发送的不是XHR请求

3.跨域。这里能又可以分为两方面,一个是调用方,另一个是被调用方。这里呢方法就比较多了,可以用APACHE,NGINX,还有注解的方式,为了避免篇幅过长,这里就介绍一种最简单的注解方式,但是也有弊端,就是只适合Spring框架,其他的就不行了,有空再单独介绍另外两种。

被调用方----注解:

AJAX跨域

AJAX跨域

很简单的一种方式,直接是呀@CrossOrigin就可以了。希望能帮助到大家。

相关文章: