跨域问题

问题描述

使用Spring Boot开发的REST API是相当容易的,一般情况下,REST API是独立部署的,如果WebUI也进行独立部署,那么RESTAPI与WebUI可能在不同的域名下部署,从WebUI发送的AJAX请求去调用RESTAPI时就会遇到“跨域问题”。在浏览器控制台上会报错: “No ‘Access-Control-Allow-Origin’ header is present on the requested resource.",因为AJAX的安全限制,它是不支持跨域的,我们需要通过技术手段来解决这个问题。

解决办法

曾经我们可使用JSONP (JSON with Padding)来实现跨域问题,简单来说就是,客户端发送一个AJAX请求,并在请求参数后面添加一个callback 参数,指向-一个JS函数(称为callback回调函数)。服务端返回了一个JavaScript 函数,该函数将JSON数据做了一个封装 ( Padding),就像这样allalk…});,这样我们只需要在客户端上定义一个callback 回调函数,就能获取从服务端返回的JSON数据了。JSONP看似简单好用,实际上它也有非常明显的限制:只支持GET请求,如果我们需要使用JSONP技术发送其他类型的请求(比如POST)就不太可能段来实现,比如iframe,但该方案过于烦琐,多年前早已弃用。现在,我们优先选择的是更加了。当然也可以通过其他手轻量级的CORS (Cross-Origin Resource Sharing)来实现跨域问题,它目前也加入到W3C规范中了,而且当前主流的浏览器都能很好地支持该规范。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章