在学习JavaScript的一些总结和经验,供大家参考和学习,同时也欢迎大家参与讨论。
温馨提醒:看这个章节我们必须了解一下同源策略和回调函数的概念;
JSONP
概述
jsonp是一种跨域通信的手段,利用 <script> 标签没有跨域限制的漏洞。通过 <script> 标签指向一个需要访问的地址并提供一个回调函数来接收数据当需要通讯时。
实现原理
场景:假如我要从跨域服务器获取一个用户省份userId=1234的信息,这条信息包括IP地址、城市和地区等;那么我如何使用JSONP跨域通信去获取?
例子:
本地服务器(http://localhost:80)下有一个文件Client.html
跨域服务器(http://server.example.com)下有一个服务端文件serverFile.php
Client.html
1 | <html lang="en"> |
serverFile.php
这里只是举个例子,并不是说服务端的代码就是这样,只是给我们说明跨域服务器中服务端文件的作用。
- 接收到客户端的请求,请求地址带有回调函数的名称(handleCallback)
- 不管它是如何从数据库还是从哪里取得的数据,反正客户端就要userId为1234的信息
- 所以我就把数据处理完,放在$data里面
- 取得回调函数的名称(handleCallback)
- 输出
回调函数名称(信息数据),像handleCallback({'ip': '212.24.234.43', 'city': '广州', 'region_name': '广东省'}) - 客户端接收到,并在客户端触发回调函数 handleCallback
1 | <?php |
参考:
https://lotabout.me/2016/JSONP/
文章标题: 跨域通信及解决方法
文章作者: 王奕聪,QQ:1301842163
许可协议:
©署名-非商用-相同方式共享 4.0
