原理分析
跨域通信的手段,原理如下:
- 利用 script 标签的 src 属性实现跨域
- 通过将前端方法作为参数传递到服务端,服务端注入参数后返回,实现服务端向客户端通信
- 由于使用 script 标签的 src 属性,只支持 get 方法
实现流程
设定 script 标签
callback定义了一个函数名,而远程服务端通过调用指定的函数并传入参数来实现传递参数,将fn(response)传递回客户端
$callback = !empty($_GET['callback']) ? $_GET['callback'] : 'callback';
echo $callback.'(.json_encode($data).)';
- 客户端接收到返回的 js 脚本,解析执行fn(response)
实现示例
1 | (function (global) { |
使用:
1 | jsonp({ |