在应对浏览器跨域问题时,我们经常会遇到一种解决方法,使用 jsonp
。那么 jsonp
到底是什么呢?
概述
jsonp是一种跨域通信的手段,它的原理其实很简单:
首先是利用script标签的src属性来实现跨域。
通过将前端方法作为参数传递到服务器端,然后由服务器端注入参数之后再返回,实现服务器端向客户端通信。
由于使用script标签的src属性,因此只支持get方法
实现流程
设定一个script标签
|
callback
定义了一个函数名,而远程服务端通过调用指定的函数并传入参数来实现传递参数,将 fn(response)
传递回客户端
|
客户端接收到返回的js脚本,开始解析和执行 fn(response)
jsonp简单实现
一个简单的jsonp实现,其实就是拼接url,然后将动态添加一个script元素到头部。
|
前端js示例
|
服务器端代码
|
然而,这个实现虽然简单,但有一些不足的地方:
我们传递的回调必须是一个全局方法,我们都知道要尽量减少全局的方法。
需要加入一些参数校验,确保接口可以正常执行。
可靠的jsonp实现
|
使用示例
|
参考
- 本文作者: luckyship
- 本文链接: https://luckyship.github.io/2021/03/07/2021-03-07-jsonp/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!