JavaScript中使用jsonp实现跨域操作

要实现跨域,首先从基本知识入手。

什么是域?

简而言之,计算机网络中的一个安全边界就是一个域。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的回调函数。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181024A14VCR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券