1,使用跨域JSONP的时候,需要取的数据有不一定是fn([。。。])这样的格式的,这不是取数据的时候能控制的啊?有可能你去获取的时候得到的是[。。。]就只是一个数组,那跨域JSONP的方式不就失败了?
2,怎么样算是同一个域名,这视频里面没讲清楚啊?怎么样有算是不同的域名?
1,使用跨域JSONP的时候,需要取的数据有不一定是fn([。。。])这样的格式的,这不是取数据的时候能控制的啊?有可能你去获取的时候得到的是[。。。]就只是一个数组,那跨域JSONP的方式不就失败了?
2,怎么样算是同一个域名,这视频里面没讲清楚啊?怎么样有算是不同的域名?
首先,回答你第一个问题,关于jsonp获取数据得到的是一个单纯的数组的话,那就证明这个数据不可以使用jsonp来跨域获取,所以我们还有其他的跨域方式可以访问,比如cors,window.name,服务器代理,个人比较推荐服务器代理模式来访问你想得到的数据,这个是没有后端的限制的,因为服务器之间不存在跨域问题,
然后回答你第二个问题,关于什么是同域名,跨域的含义是,域名不同,协议不同,端口不同,https/http代表的就是协议,域名就是协议后面的内容
JSONP
的原理是script
标签的src
可以是任意来源,最简单的理解:用cdn
,http://apps.bdimg.com/libs/jq...
这样在你的页面上就有jquery
环境了,如果在jquery
里面有个方法调用是
art('123');
那么,script
引用会立马执行art
这个方法,但是这个方法在jquery
包里面没有,就会出错,
所以,在引用jquery
之前(方法的位置无所谓,只有环境里面有这个方法)写好一个方法:
//这个方法写好了,没有执行,是上面的jquery包来调用这个方法
function art(msg){
alert(msg)
}
JSONP
就是一个调方法的术语你应该有服务器的管理权限,可以自定义调哪些方法,要给方法传什么参数,
而大多时候是别人的服务器,只能按照他给出的方法名称,我们在本地去实现他的方法(这种居多)
如果只能得到一串JSON
,如:
{id:1,text:2,data:[{name:"",value:1},{name:"",value:1}]}
这个东西它运行了,就没了,你没办法再次得到这个对象。
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
5 回答832 阅读
3 回答1.7k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
https://segmentfault.com 前面的一个像素点都不能变就是同域