要实现跨域,首先从基本知识入手。
什么是域?
简而言之,计算机网络中的一个安全边界就是一个域。js的跨域就是要实现不同域之间的信息获取。只要端口,协议和主机名中有一个不一样,就是不同都域,访问数据就要使用到跨域技术。
使用jsonp来实现跨域。在js中直接使用XHR来访问访问不同域上的数据是不可行的,主要是出于安全策略的考虑的结果;浏览器页面上引入不同域的js脚本是允许的,jsonp正好是利用这一特性,实现跨域的操作。
举个简单的例子,一个html页面里的脚本需要利用ajax获取一个不同域上的json数据,如果要访问的域为:http://kuayu.com/data.php,html中的脚本可以这样写。
callback是一个已经用惯额的参数名,也可以按照自己的习惯来使用其他名字。为了减少不必要的意外,建议还是使用惯用的用法。自定义的这个dosome函数就是跨域获取的json数据,并且作为dosome的参数,这样就实现了数据的跨域获取,获取后可以对jsondate进行操作。
道理说白了,就是将需要获取数据的url地址的脚本插入插入到页面中,并在url末尾附上需要处理的函数。这个方法在jQuery中封装成了更简单的函数,$.getJSON方法会自动判断是否跨域,不跨域的话,就调用普通的ajax方法;跨域的话,则会以异步加载js文件的形式来调用jsonp的回调函数。
领取专属 10元无门槛券
私享最新 技术干货