jsonp是一种跨域通信的手段,它的原理其实很简单:
- 首先是利用script标签的src属性来实现跨域。
- 通过将前端方法作为参数传递到服务器端,然后由服务器端注入参数之后再返回,实现服务器端向客户端通信。
- 由于使用script标签的src属性,因此只支持get方法
下面详细讲讲如何实现jsonp。
1. 实现流程
-
设定一个script标签
1<script src="http://jsonp.js?callback=xxx"> </script> -
callback定义了一个函数名,而远程服务端通过调用指定的函数并传入参数来实现传递参数,将
fn(response)
传递回客户端12$callback = ! empty($_GET[ 'callback']) ? $_GET[ 'callback'] : 'callback';echo $callback. '(.json_encode($data).)'; -
客户端接收到返回的js脚本,开始解析和执行
fn(response)
2. jsonp简单实现
一个简单的jsonp实现,其实就是拼接url,然后将动态添加一个script元素到头部。
|
|
前端js示例
hello(res){ |
服务器端代码
|
然而,这个实现虽然简单,但有一些不足的地方:
3. 可靠的jsonp实现
|
使用示例
原文地址:https://zhangguixu.github.io/2016/12/02/jsonp/