JSONP原理及执行过程

JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了script标签的src属性可以加载不同源的JavaScript特性。基本流程包括:前端定义回调函数,通过查询参数将回调函数名传给后端,后端返回包裹在回调函数内的数据,前端接收到资源后执行回调函数获取数据。这种方式仅支持GET请求,依赖服务器配置,且安全性较低。在面试中,需要强调其跨域特性和与异步对象无关的本质。
摘要由CSDN通过智能技术生成

基本原理

基本原理:
主要就是利用了 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、付费专栏及课程。

余额充值