手写一个JSONP
来源:互联网 发布:微信清理僵尸粉源码 编辑:程序博客网 时间:2024/05/29 07:09
JSONP是JSON with padding(填充式JSON或参数式JSON)的简写,是应用JSON的一种新方法,在后来的Web服务中非常流行。JSONP看起来与JSON差不多,只不过是被包含在函数调用中的JSON,就像下面这样。
callback({ “name”: “Nicholas” });
JSONP由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数。回调函数的名字一般是在请求中指定的。而数据就是传入回调函数中的JSON数据。下面是一个典型的JSONP请求。
http://freegeoip.net/json/?callback=handleResponse
这个URL是在请求一个JSONP地理定位服务。通过查询字符串来指定JSONP服务的回调参数是很常见的,就像上面的URL所示,这里指定的回调函数的名字叫handleResponse() 。
JSONP是通过动态 <script> 元素来使用的,使用时可以为 src 属性指定一个跨域URL。这里的 <script> 元素与 <img> 元素类似,都有能力不受限制地从其他域加载资源。因为JSONP是有效的JavaScript代码,所以在请求完成后,即在JSONP响应加载到页面中以后,就会立即执行。来看一个例子。
function handleResponse(response){
alert(“You’re at IP address ” + response.ip + ”, which is in ” + response.city + ”, ” + response.region_name);
}
var script = document.createElement(“script”);
script.src = “http://freegeoip.net/json/?callback=handleResponse”;
document.body.insertBefore(script, document.body.firstChild);
这个例子通过查询地理定位服务来显示你的IP地址和位置信息。
JSONP之所以在开发人员中极为流行,主要原因是它非常简单易用。与图像Ping相比,它的优点在于能够直接访问响应文本,支持在浏览器与服务器之间双向通信。不过,JSONP也有不足。
首先,JSONP是从其他域中加载代码执行。如果其他域不安全,很可能会在响应中夹带一些恶意代码,而此时除了完全放弃JSONP调用之外,没有办法追究。因此在使用不是你自己运维的Web服务时,一定得保证它安全可靠。
如果喜欢我的文章,请帮我在github上面点个star:github
- 手写一个jsonp
- 手写一个JSONP
- 手写一个JSONP
- JSONP(手写一个跨域组件)
- 手写登录借口,jsonp跨域传值
- 手写jsonp解决跨域问题原理
- 如何手写一个servlet
- 手写一个SqlHelper
- 自己手写一个springmvc
- 手写一个bind
- 手写一个手机网页
- 手写一个线程池
- 封装一个JSONP方法
- 手写纯HTML5 page一个
- 手写的一个图表插件
- 手写的一个日历表格!
- 手写一个json格式化 api
- 手写一个简单的RPC
- 2006年培养学员8万人,每年增长%25,请问按此增长速度,到那一年培训学员人数将达到20万人用for,while,dowhile,实现
- 2006年培养学员8万人,每年增长%25,请问按此增长速度,到那一年培训学员人数将达到20万人用for,while,dowhile,实现
- 垃圾回收机制
- 拷贝构造中的N中调用情况
- linux路由管理方法汇总
- 手写一个JSONP
- 管理网络
- 文章标题
- 用GDB调试程序
- 顺序表的基本操作
- EMC,EMI,EMS,ESD分别是什么?有什么区别和联系?
- uiautomator简单使用(三)
- 33.3 XML语言
- leetcode刷题two sum 1