JSONP原理及执行过程

基本原理

基本原理:
主要就是利用了 script 标签的src不受浏览器同源策略的限制。
可以把非同源的JavaScript代码请求到本地,并执行。

执行过程

1、前端定义一个解析函数(如: callback = function (res) {})

2、通过params的形式包装script标签的请求参数,并且声明执行函数(如callback = fn)

3、后端获取到前端声明的执行函数(callback),并以带上参数且调用执行函数的方式传递给前端

4、前端在script标签返回资源的时候就会去执行callback并通过回调函数的方式拿到数据了。

分析

1.把非同源的JavaScript代码请求到本地,并执行:
在这里插入图片描述
2. 如果请求回来的JavaScript代码只包含函数的调用,则需要程序员手动定义show方法:
缺点:服务器响应回来的代码中,调用的函数的函数名是写死的!
在这里插入图片描述
3.在指定的script标签的src属性时,可以通过查询参数中的callback,自定义回调函数的名称:
在这里插入图片描述
4.在指定script标签的src属性时,还可以通过查询参数的方式,指定要发送给服务器的数据:
在这里插入图片描述

优缺点

优点:兼容性好,在一些较老版本的浏览器中也可以运行

缺点:只能进行get请求

注:
jsonp功能的实现需要前后端的配合使用
通过script标签的src 请求的资源,默认会按js语法来解析

解决面试时回答

1.本质是利用了script标签的src属性的天然跨域特性。

2.它向后台接口发起请求,传递一个前台页面拥有的函数名称,后台返回函数的调用形式,并拼接数据,前台页面拼接后台返回的内容,会以js语法来解析。

3.它与异步对象没有任何的关系。

4.它只能发起get请求,并且它严重的依赖服务器的配置。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值