关闭

jsonp方法及原理

标签: jsonp跨域src
90人阅读 评论(0) 收藏 举报

jsonp:

有什么用?

通过jsonp非官方规则,可跨域请求其他网站的资源。

怎么用?

1.创建一个<scrip></script>来处理跨域文件资源 首先要明确,跨域文件资源是否被fn()的()包括了起来,若没有,则无法实现跨域处理。

2.根据按需加载跨域资源原则,应当动态生成一个数据请求script标签,通过dom操作来做。完成之后,将script标签的src设置成请求跨域资源的地址即可。

 

注意事项:

1跨域文件资源处理script,一定要放在请求跨域资源的script标签前面,且必须属于window

2.通过请求跨域资源script标签时他就是一个普通的script标签,可以设置参数,请求方法等。在用src属性链接跨域资源的时候,根据后台沟通,进行参数传递.通常是callback  也就是src=”url?callBack=fn”;

3.src请求资源,不会关心你文件资源的后缀名是什么。他只会关注,你文件的具体内容。只要内容能正常被js使用,那么整个跨域请求就没问题。

4.通常情况下,请求的文件资源都会是一个json

 

原理:

利用src的漏洞,src可以跨域请求资源的漏洞。深入理解,src究竟做了什么?它实际上就是一个url地址,通过url地址请求资源。试问,url不是想访问哪就访问哪?

通过请求跨越资源scriopt 我们相当于是引入了一个外部文档,就像我们引用jq文档一样(众所周知,jq并不是非要下载下来才能引用,引用他的网络地址也是一样的)

而在引用的过程中,文档内容一定是这样的fn(文档实体内容),也就是说你引用的文档内容,一定是这种形式包括起来的。

随后,在处理标签的时候,添加一个函数fn(data){},这样全部文档内容就会被当作一个参数传递进来,如果文档内容是一个数组 就可以 alert(data[1]). 你想怎么处理,就看你的喽。

 

ps

跨域请求资源,一定要跨域方的后台配合撒,没有对方将文件资源打包好,提供回掉函数,我们也没办法。目前市面上流行的,还不存在强制进行跨域资源请求的方法。不过……通常情况下,不靠谱的程序员都会将回掉函数的名称设置成callback,你可以找一些网站试试请求他们的资源。嘎嘎

实战题:

1.在本地建立一个txt文件,写成fn([1,2,3])(文件资源通常是后台写好的,这个fn看后代怎么定义了。通常他们会设置一个callback函数,让你自己定义fn的名称 在srcurl后面加上?callback=fn;既可,fn可以随便你叫什么名字。)

2.按照上述步骤,弹出这个数组试试。

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:152次
    • 积分:19
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档