一、如何解决跨域的问题
跨域一般都需要后端参与,除非数据接口为jsonp格式
1.后端代理
因为服务器获取数据不存在跨域,而我们前端与后端在同一个服务器的端口下工作,所以我们之间获取数据也不存在跨域,那么我们就可以通过公司后端。让后端获取端口数据后我们在同域服务器下获取数据。
2.cors
CORS全称是“跨域资源共享”,它允许浏览器向跨域服务器发出XMLHttpRequest请求,从而克服了Ajax只能同源使用的限制。
需要提供接口的服务器后端在接口源代码中添加下面两句代码:
// header(‘Access-Control-Allow-Origin:‘)//允许跨域访问的域名,表示所有域名。 // header(‘Access-Control-Allow-Method:POST,GET’)//允许跨域访问的请求方式。3.JSONP格式的数据(JSON with Padding)
JSONP是一种数据格式,将json格式的数据作为实参填充给函数,利用函数获取数据。
其实就是别人写好了函数名,再将数据当作实参放进了函数中,我们想要获取对应的数据只需要创建一个同样函数名的函数,在对实参做出操作即可。例如:
别人接口网页中包含的数据格式为:
fn(数据)
我们想要获取的话:
function fn(data) {};
至于我们要如何获取别人给我们的数据,我们肯定不可能照着人家的数据直接复制,这样太麻烦了,我们可以利用script标签的src属性可以引入任意拓展名文件这一特性,将我们想要获取数据的网址作为src的地址,将其中的jsonp数据作为一条JS代码引入到我们的文档中,这样就相当于将别人的jsonp数据变成了一个带参数的执行函数,而我们需要的数据就是它的参数,我们只要提前在我们的函数中写上要对参数进行的操作。