跨域是指 在不一样的域之间进行数据传输,只要协议、域名、端口有任何一个不一样,都被看成是不一样的域。
解决跨域的方法:
1.JSONP: 利用script的src 能够在不一样域之间请求数据的特色,向某一地址发请求, 须要后台返回一个可以执行的js文件,html
如上图,这里利用jquery.ajax的jsonp 后台返回的是一个函数的调用,函数的声明是ajax中的success
咱们也能够本身写一个script 利用上面的方式 node
后台返回的是一个 data的函数调用, 声明在前台页面中. 这些都须要后台的配合,由于返回的数据前面 须要加一下函数名,必须和后台约定好
jquery
2.window.name来进行跨域:window对象有个name属性,该属性有个特征:即在一个窗口(window)的生命周期内,窗口载入的全部的页面都是共享一个window.name的,每一个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的全部页面中的,并不会因新页面的载入而进行重置。
web
3.设置代理:在web服务器上封装第三方服务,而后给本身同源的web页面调用
我用node搭建了一个代理服务器,在这里使用了http-proxy-middleware 这个中间件 很是好用。 只须要设置请求而后就直接可使用,如图ajax
只须要在页面中发送请求,便可用代理服务器代理到请求的服务器,拿到数据。
json
4. 还有一种postMessage ,一种HTML5新增方法,如今浏览器及IE8+支持,简单易用高大上。可是 我不是很喜欢用iframe。也不知道问什么,天生的排斥。 因此在这里推荐大神写的http://www.cnblogs.com/dolphinX/p/3464056.html 跨域